Add functions PyUnicode_Append() and PyUnicode_AppendAndDel() that mirror
PyString_Concat() and PyString_ConcatAndDel() (the name PyUnicode_Concat()
was already taken).

Change PyObject_Repr() to always return a unicode object.

Update all repr implementations to return unicode objects.

Add a function PyObject_ReprStr8() that calls PyObject_Repr() and converts
the result to an 8bit string.

Use PyObject_ReprStr8() where using PyObject_Repr() can't be done
straightforward.
diff --git a/Modules/cPickle.c b/Modules/cPickle.c
index 9adcbde..68990c9 100644
--- a/Modules/cPickle.c
+++ b/Modules/cPickle.c
@@ -1122,7 +1122,7 @@
 	/* proto < 2:  write the repr and newline.  This is quadratic-time
 	 * (in the number of digits), in both directions.
 	 */
-	if (!( repr = PyObject_Repr(args)))
+	if (!( repr = PyObject_ReprStr8(args)))
 		goto finally;
 
 	if ((size = PyString_Size(repr)) < 0)
@@ -1189,7 +1189,7 @@
 
 		static char string = STRING;
 
-		if (!( repr = PyObject_Repr(args)))
+		if (!( repr = PyObject_ReprStr8(args)))
 			return -1;
 
 		if ((len = PyString_Size(repr)) < 0)