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/modulefinder.py b/Lib/modulefinder.py
index cc5ad19..c345a33 100644
--- a/Lib/modulefinder.py
+++ b/Lib/modulefinder.py
@@ -17,12 +17,12 @@
     READ_MODE = "r"
 
 # XXX Clean up once str8's cstor matches bytes.
-LOAD_CONST = str8([dis.opname.index('LOAD_CONST')])
-IMPORT_NAME = str8([dis.opname.index('IMPORT_NAME')])
-STORE_NAME = str8([dis.opname.index('STORE_NAME')])
-STORE_GLOBAL = str8([dis.opname.index('STORE_GLOBAL')])
+LOAD_CONST = bytes([dis.opname.index('LOAD_CONST')])
+IMPORT_NAME = bytes([dis.opname.index('IMPORT_NAME')])
+STORE_NAME = bytes([dis.opname.index('STORE_NAME')])
+STORE_GLOBAL = bytes([dis.opname.index('STORE_GLOBAL')])
 STORE_OPS = [STORE_NAME, STORE_GLOBAL]
-HAVE_ARGUMENT = str8([dis.HAVE_ARGUMENT])
+HAVE_ARGUMENT = bytes([dis.HAVE_ARGUMENT])
 
 # Modulefinder does a good job at simulating Python's, but it can not
 # handle __path__ modifications packages make at runtime.  Therefore there
@@ -368,7 +368,7 @@
         consts = co.co_consts
         LOAD_LOAD_AND_IMPORT = LOAD_CONST + LOAD_CONST + IMPORT_NAME
         while code:
-            c = str8([code[0]])
+            c = bytes([code[0]])
             if c in STORE_OPS:
                 oparg, = unpack('<H', code[1:3])
                 yield "store", (names[oparg],)