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_cgi.py b/Lib/test/test_cgi.py
index 6d5bfd6..652b36e 100644
--- a/Lib/test/test_cgi.py
+++ b/Lib/test/test_cgi.py
@@ -4,7 +4,7 @@
 import sys
 import tempfile
 import unittest
-from StringIO import StringIO
+from io import StringIO
 
 class HackedSysModule:
     # The regression test will have real values in sys.argv, which
@@ -15,9 +15,9 @@
 cgi.sys = HackedSysModule()
 
 try:
-    from cStringIO import StringIO
+    from io import StringIO
 except ImportError:
-    from StringIO import StringIO
+    from io import StringIO
 
 class ComparableException:
     def __init__(self, err):