builtin_dir():  Treat classic classes like types.  Use PyDict_Keys instead
of PyMapping_Keys because we know we have a real dict.  Tolerate that
objects may have an attr named "__dict__" that's not a dict (Py_None
popped up during testing).

test_descr.py, test_dir():  Test the new classic-class behavior; beef up
the new-style class test similarly.

test_pyclbr.py, checkModule():  dir(C) is no longer a synonym for
C.__dict__.keys() when C is a classic class (looks like the same thing
that burned distutils! -- should it be *made* a synoym again?  Then it
would be inconsistent with new-style class behavior.).
diff --git a/Lib/test/test_pyclbr.py b/Lib/test/test_pyclbr.py
index e5de657..ce4d8ac 100644
--- a/Lib/test/test_pyclbr.py
+++ b/Lib/test/test_pyclbr.py
@@ -76,7 +76,7 @@
                 self.assertListEq(real_bases, pyclbr_bases, ignore)
 
                 actualMethods = []
-                for m in dir(py_item):
+                for m in py_item.__dict__.keys():
                     if type(getattr(py_item, m)) == MethodType:
                         actualMethods.append(m)
                 foundMethods = []