Issue #27626: Spelling fixes in docs, comments and internal names

Based on patch by Ville Skyttä.
diff --git a/Lib/test/test_cookielib.py b/Lib/test/test_cookielib.py
index 5182bc0..f2dd972 100644
--- a/Lib/test/test_cookielib.py
+++ b/Lib/test/test_cookielib.py
@@ -346,7 +346,7 @@
 ##   comma-separated list, it'll be a headache to parse (at least my head
 ##   starts hurting every time I think of that code).
 ## - Expires: You'll get all sorts of date formats in the expires,
-##   including emtpy expires attributes ("expires="). Be as flexible as you
+##   including empty expires attributes ("expires="). Be as flexible as you
 ##   can, and certainly don't expect the weekday to be there; if you can't
 ##   parse it, just ignore it and pretend it's a session cookie.
 ## - Domain-matching: Netscape uses the 2-dot rule for _all_ domains, not
diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py
index 3e88168..c81064d 100644
--- a/Lib/test/test_deque.py
+++ b/Lib/test/test_deque.py
@@ -329,7 +329,7 @@
         d.clear()
         self.assertEqual(len(d), 0)
         self.assertEqual(list(d), [])
-        d.clear()               # clear an emtpy deque
+        d.clear()               # clear an empty deque
         self.assertEqual(list(d), [])
 
     def test_remove(self):
diff --git a/Lib/test/test_structseq.py b/Lib/test/test_structseq.py
index daa12aa..75861fe 100644
--- a/Lib/test/test_structseq.py
+++ b/Lib/test/test_structseq.py
@@ -88,7 +88,7 @@
         class Exc(Exception):
             pass
 
-        # Devious code could crash structseqs' contructors
+        # Devious code could crash structseqs' constructors
         class C:
             def __getitem__(self, i):
                 raise Exc