SF patch# 1770008 by Christian Heimes (plus some extras).
Completely get rid of StringIO.py and cStringIO.c.

I had to fix a few tests and modules beyond what Christian did, and
invent a few conventions.  E.g. in elementtree, I chose to
write/return Unicode strings whe no encoding is given, but bytes when
an explicit encoding is given.  Also mimetools was made to always
assume binary files.
diff --git a/Lib/mimetools.py b/Lib/mimetools.py
index 8c1cc19..45d9d32 100644
--- a/Lib/mimetools.py
+++ b/Lib/mimetools.py
@@ -144,6 +144,7 @@
 
 
 # Subroutines for decoding some common content-transfer-types
+# Input and output must be files opened in binary mode
 
 def decode(input, output, encoding):
     """Decode common content-transfer-encodings (base64, quopri, uuencode)."""
@@ -157,7 +158,7 @@
         import uu
         return uu.decode(input, output)
     if encoding in ('7bit', '8bit'):
-        return output.write(input.read())
+        return output.write(input.read().decode("Latin-1"))
     if encoding in decodetab:
         pipethrough(input, decodetab[encoding], output)
     else: