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/Doc/tools/indfix.py b/Doc/tools/indfix.py
index 5bab0fb..23f9e17 100755
--- a/Doc/tools/indfix.py
+++ b/Doc/tools/indfix.py
@@ -19,7 +19,7 @@
 __version__ = '$Revision$'
 
 import re
-import StringIO
+import io
 import sys
 
 
@@ -50,7 +50,7 @@
         ifp = open(ifn)
     if ofn is None:
         ofn = ifn
-    ofp = StringIO.StringIO()
+    ofp = io.StringIO()
     entries = []
     match = breakable_re.match
     write = ofp.write
diff --git a/Doc/tools/sgmlconv/docfixer.py b/Doc/tools/sgmlconv/docfixer.py
index 9f93966..8459fa2 100755
--- a/Doc/tools/sgmlconv/docfixer.py
+++ b/Doc/tools/sgmlconv/docfixer.py
@@ -1055,8 +1055,8 @@
         ofp = sys.stdout
     elif len(sys.argv) == 3:
         ifp = open(sys.argv[1])
-        import StringIO
-        ofp = StringIO.StringIO()
+        import io
+        ofp = io.StringIO()
     else:
         usage()
         sys.exit(2)