Get rid of dict.has_key(). Boy this has a lot of repercussions!
Not all code has been fixed yet; this is just a checkpoint...
The C API still has PyDict_HasKey() and _HasKeyString(); not sure
if I want to change those just yet.
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index f160867..296dc9b 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -472,7 +472,7 @@
 f()
 g = {}
 exec 'z = 1' in g
-if g.has_key('__builtins__'): del g['__builtins__']
+if '__builtins__' in g: del g['__builtins__']
 if g != {'z': 1}: raise TestFailed, 'exec \'z = 1\' in g'
 g = {}
 l = {}
@@ -480,8 +480,8 @@
 import warnings
 warnings.filterwarnings("ignore", "global statement", module="<string>")
 exec 'global a; a = 1; b = 2' in g, l
-if g.has_key('__builtins__'): del g['__builtins__']
-if l.has_key('__builtins__'): del l['__builtins__']
+if '__builtins__' in g: del g['__builtins__']
+if '__builtins__' in l: del l['__builtins__']
 if (g, l) != ({'a':1}, {'b':2}): raise TestFailed, 'exec ... in g (%s), l (%s)' %(g,l)