_split_ascii() [method and function]: Don't join the lines just to
split them again.  Simply return them as chunk lists.

_encode_chunks(): Don't add more folding whitespace than necessary.
diff --git a/Lib/email/Header.py b/Lib/email/Header.py
index 245ffc8..66a18c8 100644
--- a/Lib/email/Header.py
+++ b/Lib/email/Header.py
@@ -337,10 +337,9 @@
         return chunk + self._split(last, charset, self._maxlinelen, splitchars)
 
     def _split_ascii(self, s, charset, firstlen, splitchars):
-        line = _split_ascii(s, firstlen, self._maxlinelen,
-                            self._continuation_ws, splitchars)
-        lines = line.splitlines()
-        return zip(lines, [charset]*len(lines))
+        chunks = _split_ascii(s, firstlen, self._maxlinelen,
+                              self._continuation_ws, splitchars)
+        return zip(chunks, [charset]*len(chunks))
 
     def _encode_chunks(self, newchunks, maxlinelen):
         # MIME-encode a header with many different charsets and/or encodings.
@@ -360,14 +359,18 @@
         #
         # =?charset1?q?Mar=EDa_Gonz=E1lez_Alonso?=\n
         #  =?charset2?b?SvxyZ2VuIEL2aW5n?="
-        #
         chunks = []
         for header, charset in newchunks:
             if charset is None or charset.header_encoding is None:
                 s = header
             else:
                 s = charset.header_encode(header)
-            _max_append(chunks, s, maxlinelen, ' ')
+            # Don't add more folding whitespace than necessary
+            if chunks and chunks[-1].endswith(' '):
+                extra = ''
+            else:
+                extra = ' '
+            _max_append(chunks, s, maxlinelen, extra)
         joiner = NL + self._continuation_ws
         return joiner.join(chunks)
 
@@ -412,7 +415,6 @@
 
 
 def _split_ascii(s, firstlen, restlen, continuation_ws, splitchars):
-    linejoiner = '\n' + continuation_ws
     lines = []
     maxlen = firstlen
     for line in s.splitlines():
@@ -464,9 +466,8 @@
                 # splitting on whitespace, try to recursively split this line
                 # on whitespace.
                 if partlen > maxlen and ch <> ' ':
-                    subs = _split_ascii(part, maxlen, restlen,
+                    subl = _split_ascii(part, maxlen, restlen,
                                         continuation_ws, ' ')
-                    subl = re.split(linejoiner, subs)
                     lines.extend(subl[:-1])
                     this = [subl[-1]]
                 else:
@@ -479,7 +480,7 @@
         # Put any left over parts on a line by themselves
         if this:
             lines.append(joiner.join(this))
-    return linejoiner.join(lines)
+    return lines