Add support for weak references to code objects. This will be used by an optimization in the incoming Python 3 JIT.

Patch by Reid Kleckner!
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 4014325..58a860c 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -552,7 +552,7 @@
         # complex
         check(complex(0,1), size(h + '2d'))
         # code
-        check(get_cell().func_code, size(h + '4i8Pi2P'))
+        check(get_cell().func_code, size(h + '4i8Pi3P'))
         # BaseException
         check(BaseException(), size(h + '3P'))
         # UnicodeEncodeError