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/test/test_dis.py b/Lib/test/test_dis.py
index f1bd3e7..f135780 100644
--- a/Lib/test/test_dis.py
+++ b/Lib/test/test_dis.py
@@ -4,7 +4,7 @@
 import unittest
 import sys
 import dis
-import StringIO
+import io
 
 
 def _f(a):
@@ -103,7 +103,7 @@
 
 class DisTests(unittest.TestCase):
     def do_disassembly_test(self, func, expected):
-        s = StringIO.StringIO()
+        s = io.StringIO()
         save_stdout = sys.stdout
         sys.stdout = s
         dis.dis(func)