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/email/generator.py b/Lib/email/generator.py
index c480229..fb03c9f 100644
--- a/Lib/email/generator.py
+++ b/Lib/email/generator.py
@@ -12,7 +12,7 @@
 import random
 import warnings
 
-from cStringIO import StringIO
+from io import StringIO
 from email.header import Header
 
 UNDERSCORE = '_'
diff --git a/Lib/email/iterators.py b/Lib/email/iterators.py
index 155e19e..e4476e3 100644
--- a/Lib/email/iterators.py
+++ b/Lib/email/iterators.py
@@ -12,7 +12,7 @@
     ]
 
 import sys
-from cStringIO import StringIO
+from io import StringIO
 
 
 
diff --git a/Lib/email/message.py b/Lib/email/message.py
index 1767bfb..78e7d82 100644
--- a/Lib/email/message.py
+++ b/Lib/email/message.py
@@ -10,7 +10,7 @@
 import uu
 import binascii
 import warnings
-from cStringIO import StringIO
+from io import StringIO
 
 # Intrapackage imports
 import email.charset
diff --git a/Lib/email/mime/audio.py b/Lib/email/mime/audio.py
index c7290c4..f40bcbd 100644
--- a/Lib/email/mime/audio.py
+++ b/Lib/email/mime/audio.py
@@ -8,7 +8,7 @@
 
 import sndhdr
 
-from cStringIO import StringIO
+from io import StringIO
 from email import encoders
 from email.mime.nonmultipart import MIMENonMultipart
 
diff --git a/Lib/email/parser.py b/Lib/email/parser.py
index 2fcaf25..782b985 100644
--- a/Lib/email/parser.py
+++ b/Lib/email/parser.py
@@ -7,7 +7,7 @@
 __all__ = ['Parser', 'HeaderParser']
 
 import warnings
-from cStringIO import StringIO
+from io import StringIO
 
 from email.feedparser import FeedParser
 from email.message import Message
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index c7c61ef..5e8d652 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -9,7 +9,7 @@
 import difflib
 import unittest
 import warnings
-from cStringIO import StringIO
+from io import StringIO
 
 import email
 
diff --git a/Lib/email/test/test_email_renamed.py b/Lib/email/test/test_email_renamed.py
index 4688a1b..ea5b1a1 100644
--- a/Lib/email/test/test_email_renamed.py
+++ b/Lib/email/test/test_email_renamed.py
@@ -9,7 +9,7 @@
 import difflib
 import unittest
 import warnings
-from cStringIO import StringIO
+from io import StringIO
 
 import email
 
diff --git a/Lib/email/test/test_email_torture.py b/Lib/email/test/test_email_torture.py
index d708b74..67f106a 100644
--- a/Lib/email/test/test_email_torture.py
+++ b/Lib/email/test/test_email_torture.py
@@ -9,7 +9,7 @@
 import sys
 import os
 import unittest
-from cStringIO import StringIO
+from io import StringIO
 from types import ListType
 
 from email.test.test_email import TestEmailBase
diff --git a/Lib/email/utils.py b/Lib/email/utils.py
index de9fbf8..ce4b313 100644
--- a/Lib/email/utils.py
+++ b/Lib/email/utils.py
@@ -27,7 +27,7 @@
 import socket
 import urllib
 import warnings
-from cStringIO import StringIO
+from io import StringIO
 
 from email._parseaddr import quote
 from email._parseaddr import AddressList as _AddressList