Fix PyString_Format() so that '%c' % u'a' returns u'a'
instead of raising a TypeError. (From SF patch #710127)

Add tests to verify this is fixed.

Add various tests for '%c' % int.
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index 4bcd121..dcf961d 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -543,6 +543,7 @@
         self.checkequal('"', "%c", '__mod__', 34)
         self.checkequal('$', "%c", '__mod__', 36)
         self.checkequal('10', "%d", '__mod__', 10)
+        self.checkequal('\x7f', "%c", '__mod__', 0x7f)
 
         for ordinal in (-100, 0x200000):
             # unicode raises ValueError, str raises OverflowError