Rip out all codecs that can't work in a unicode/bytes world:
base64, uu, zlib, rot_13, hex, quopri, bz2, string_escape.

However codecs.escape_encode() and codecs.escape_decode()
still exist, as they are used for pickling str8 objects
(so those two functions can go, when the str8 type is removed).
diff --git a/Lib/pickle.py b/Lib/pickle.py
index b950717..9919aa4 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -34,6 +34,7 @@
 import struct
 import re
 import io
+import codecs
 
 __all__ = ["PickleError", "PicklingError", "UnpicklingError", "Pickler",
            "Unpickler", "dump", "dumps", "load", "loads"]
@@ -929,7 +930,7 @@
                 break
         else:
             raise ValueError, "insecure string pickle"
-        self.append(str8(rep.decode("string-escape")))
+        self.append(str8(codecs.escape_decode(rep)[0]))
     dispatch[STRING[0]] = load_string
 
     def load_binstring(self):