Complete a merge of the mimelib project and the Python cvs codebases
for the email package.  The former is now just a shell project that
has some extra files for packaging for independent use (e.g. setup.py
and README).

Added a compatibility layer so that the same API can be used in Python
2.1 and 2.2/2.3 with the major differences shuffled off into helper
modules (_compat21.py and _compat22.py).

Also bumped the package version number to 2.0.3 for some fixes to be
checked in momentarily.
diff --git a/Lib/email/Encoders.py b/Lib/email/Encoders.py
index f09affa..c369a24 100644
--- a/Lib/email/Encoders.py
+++ b/Lib/email/Encoders.py
@@ -5,15 +5,34 @@
 """
 
 import base64
-from quopri import encodestring as _encodestring
 
 
 
 # Helpers
-def _qencode(s):
-    enc = _encodestring(s, quotetabs=1)
-    # Must encode spaces, which quopri.encodestring() doesn't do
-    return enc.replace(' ', '=20')
+try:
+    from quopri import encodestring as _encodestring
+
+    def _qencode(s):
+        enc = _encodestring(s, quotetabs=1)
+        # Must encode spaces, which quopri.encodestring() doesn't do
+        return enc.replace(' ', '=20')
+except ImportError:
+    # Python 2.1 doesn't have quopri.encodestring()
+    from cStringIO import StringIO
+    import quopri as _quopri
+
+    def _qencode(s):
+        if not s:
+            return s
+        hasnewline = (s[-1] == '\n')
+        infp = StringIO(s)
+        outfp = StringIO()
+        _quopri.encode(infp, outfp, quotetabs=1)
+        # Python 2.x's encode() doesn't encode spaces even when quotetabs==1
+        value = outfp.getvalue().replace(' ', '=20')
+        if not hasnewline and value[-1] == '\n':
+            return value[:-1]
+        return value
 
 
 def _bencode(s):