More email package fixes.

MIMEApplication() requires a bytes object for its _data, so fix the tests.

We no longer need utils._identity() or utils._bdecode().  The former isn't
used anywhere AFAICT (where's "make test's" lint? <wink>) and the latter is a
kludge that is eliminated by base64.b64encode().

Current status: 5F/5E
diff --git a/Lib/email/encoders.py b/Lib/email/encoders.py
index 06016cd..2e77e61 100644
--- a/Lib/email/encoders.py
+++ b/Lib/email/encoders.py
@@ -11,8 +11,8 @@
     'encode_quopri',
     ]
 
-import base64
 
+from base64 import b64encode as _bencode
 from quopri import encodestring as _encodestring
 
 
@@ -23,19 +23,6 @@
     return enc.replace(' ', '=20')
 
 
-def _bencode(s):
-    # We can't quite use base64.encodestring() since it tacks on a "courtesy
-    # newline".  Blech!
-    if not s:
-        return s
-    hasnewline = (s[-1] == '\n')
-    value = base64.encodestring(s)
-    if not hasnewline and value[-1] == '\n':
-        return value[:-1]
-    return value
-
-
-
 def encode_base64(msg):
     """Encode the message's payload in Base64.
 
diff --git a/Lib/email/message.py b/Lib/email/message.py
index e368737..ff262c7 100644
--- a/Lib/email/message.py
+++ b/Lib/email/message.py
@@ -8,6 +8,7 @@
 
 import re
 import uu
+import base64
 import binascii
 import warnings
 from io import BytesIO, StringIO
@@ -196,12 +197,14 @@
             return utils._qdecode(payload)
         elif cte == 'base64':
             try:
-                return utils._bdecode(payload)
+                if isinstance(payload, str):
+                    payload = payload.encode('raw-unicode-escape')
+                return base64.b64decode(payload)
+                #return utils._bdecode(payload)
             except binascii.Error:
                 # Incorrect padding
                 pass
         elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
-            payload += '\n'
             in_file = BytesIO(payload.encode('raw-unicode-escape'))
             out_file = BytesIO()
             try:
@@ -212,7 +215,9 @@
                 pass
         # Is there a better way to do this?  We can't use the bytes
         # constructor.
-        return bytes(payload, 'raw-unicode-escape')
+        if isinstance(payload, str):
+            return payload.encode('raw-unicode-escape')
+        return payload
 
     def set_payload(self, payload, charset=None):
         """Set the payload to the given value.
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index ef11e17..15c8325 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -1012,7 +1012,7 @@
 class TestMIMEApplication(unittest.TestCase):
     def test_headers(self):
         eq = self.assertEqual
-        msg = MIMEApplication('\xfa\xfb\xfc\xfd\xfe\xff')
+        msg = MIMEApplication(b'\xfa\xfb\xfc\xfd\xfe\xff')
         eq(msg.get_content_type(), 'application/octet-stream')
         eq(msg['content-transfer-encoding'], 'base64')
 
diff --git a/Lib/email/utils.py b/Lib/email/utils.py
index 5771209..8747110 100644
--- a/Lib/email/utils.py
+++ b/Lib/email/utils.py
@@ -55,22 +55,6 @@
 
 # Helpers
 
-def _identity(s):
-    return s
-
-
-def _bdecode(s):
-    # We can't quite use base64.encodestring() since it tacks on a "courtesy
-    # newline".  Blech!
-    if not s:
-        return s
-    value = base64.decodestring(s)
-    if not s.endswith('\n') and value.endswith('\n'):
-        return value[:-1]
-    return value
-
-
-
 def formataddr(pair):
     """The inverse of parseaddr(), this takes a 2-tuple of the form
     (realname, email_address) and returns the string value suitable