Checkpoint.  Manipulated things so that string literals are always
unicode, and a few other compensating changes, e.g. str <- unicode,
chr <- unichr, and repr() of a unicode string no longer starts
with 'u'.  Lots of unit tests are broken, but some basic things
work, in particular distutils works so the extensions can be built,
and test_builtin.py works.
diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
index ebd9931..ea3799a 100644
--- a/Lib/distutils/cmd.py
+++ b/Lib/distutils/cmd.py
@@ -222,7 +222,7 @@
         if val is None:
             setattr(self, option, default)
             return default
-        elif type(val) is not StringType:
+        elif not isinstance(val, basestring):
             raise DistutilsOptionError, \
                   "'%s' must be a %s (got `%s`)" % (option, what, val)
         return val
@@ -242,12 +242,11 @@
         val = getattr(self, option)
         if val is None:
             return
-        elif type(val) is StringType:
+        elif isinstance(val, basestring):
             setattr(self, option, re.split(r',\s*|\s+', val))
         else:
             if type(val) is ListType:
-                types = map(type, val)
-                ok = (types == [StringType] * len(val))
+                ok = all(isinstance(v, basestring) for v in val)
             else:
                 ok = 0
 
@@ -421,7 +420,7 @@
 
 
         # Allow 'infiles' to be a single string
-        if type(infiles) is StringType:
+        if isinstance(infiles, basestring):
             infiles = (infiles,)
         elif type(infiles) not in (ListType, TupleType):
             raise TypeError, \