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/Objects/moduleobject.c b/Objects/moduleobject.c
index e454fcf..18914d8 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -59,6 +59,7 @@
 {
 	PyObject *d;
 	PyObject *nameobj;
+	char *s;
 	if (!PyModule_Check(m)) {
 		PyErr_BadArgument();
 		return NULL;
@@ -66,11 +67,13 @@
 	d = ((PyModuleObject *)m)->md_dict;
 	if (d == NULL ||
 	    (nameobj = PyDict_GetItemString(d, "__name__")) == NULL ||
-	    !PyString_Check(nameobj))
+	    !(PyString_Check(nameobj) || PyUnicode_Check(nameobj)))
 	{
 		PyErr_SetString(PyExc_SystemError, "nameless module");
 		return NULL;
 	}
+        if (PyUnicode_Check(nameobj))
+		nameobj = _PyUnicode_AsDefaultEncodedString(nameobj, "replace");
 	return PyString_AsString(nameobj);
 }
 
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index ce28692..e2f1b2f 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -2072,7 +2072,6 @@
     p = PyString_AS_STRING(repr);
 
     if (quotes) {
-        *p++ = 'u';
         *p++ = (findchar(s, size, '\'') &&
                 !findchar(s, size, '"')) ? '"' : '\'';
     }
@@ -2081,7 +2080,7 @@
 
         /* Escape quotes and backslashes */
         if ((quotes &&
-	     ch == (Py_UNICODE) PyString_AS_STRING(repr)[1]) || ch == '\\') {
+	     ch == (Py_UNICODE) PyString_AS_STRING(repr)[0]) || ch == '\\') {
             *p++ = '\\';
             *p++ = (char) ch;
 	    continue;
@@ -2167,7 +2166,7 @@
             *p++ = (char) ch;
     }
     if (quotes)
-        *p++ = PyString_AS_STRING(repr)[1];
+        *p++ = PyString_AS_STRING(repr)[0];
 
     *p = '\0';
     _PyString_Resize(&repr, p - PyString_AS_STRING(repr));