Merging the py3k-pep3137 branch back into the py3k branch.
No detailed change log; just check out the change log for the py3k-pep3137
branch.  The most obvious changes:

  - str8 renamed to bytes (PyString at the C level);
  - bytes renamed to buffer (PyBytes at the C level);
  - PyString and PyUnicode are no longer compatible.

I.e. we now have an immutable bytes type and a mutable bytes type.

The behavior of PyString was modified quite a bit, to make it more
bytes-like.  Some changes are still on the to-do list.
diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py
index 9229f38..fa13563 100755
--- a/Lib/test/test_binascii.py
+++ b/Lib/test/test_binascii.py
@@ -56,7 +56,7 @@
             a = binascii.b2a_base64(b)
             lines.append(a)
 
-        fillers = bytes()
+        fillers = buffer()
         valid = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
         for i in range(256):
             if i not in valid:
@@ -64,7 +64,7 @@
         def addnoise(line):
             noise = fillers
             ratio = len(line) // len(noise)
-            res = bytes()
+            res = buffer()
             while line and noise:
                 if len(line) // len(noise) > ratio:
                     c, line = line[0], line[1:]
@@ -72,7 +72,7 @@
                     c, noise = noise[0], noise[1:]
                 res.append(c)
             return res + noise + line
-        res = bytes()
+        res = buffer()
         for line in map(addnoise, lines):
             b = binascii.a2b_base64(line)
             res += b