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_fileinput.py b/Lib/test/test_fileinput.py
index e0b5818..a9d2fa6 100644
--- a/Lib/test/test_fileinput.py
+++ b/Lib/test/test_fileinput.py
@@ -7,7 +7,7 @@
 from test.test_support import verbose, TESTFN, run_unittest
 from test.test_support import unlink as safe_unlink
 import sys, os, re
-from StringIO import StringIO
+from io import StringIO
 from fileinput import FileInput, hook_encoded
 
 # The fileinput module has 2 interfaces: the FileInput class which does