Add optional docstrings to member descriptors.  For backwards
compatibility, this required all places where an array of "struct
memberlist" structures was declared that is referenced from a type's
tp_members slot to change the type of the structure to PyMemberDef;
"struct memberlist" is now only used by old code that still calls
PyMember_Get/Set.  The code in PyObject_GenericGetAttr/SetAttr now
calls the new APIs PyMember_GetOne/SetOne, which take a PyMemberDef
argument.

As examples, I added actual docstrings to the attributes of a few
types: file, complex, instance method, super, and xxsubtype.spamlist.

Also converted the symtable to new style getattr.
diff --git a/Objects/classobject.c b/Objects/classobject.c
index 3845dfc..f8ee6fd 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -2006,10 +2006,13 @@
 
 #define OFF(x) offsetof(PyMethodObject, x)
 
-static struct memberlist instancemethod_memberlist[] = {
-	{"im_class",	T_OBJECT,	OFF(im_class),	READONLY|RESTRICTED},
-	{"im_func",	T_OBJECT,	OFF(im_func),	READONLY|RESTRICTED},
-	{"im_self",	T_OBJECT,	OFF(im_self),	READONLY|RESTRICTED},
+static PyMemberDef instancemethod_memberlist[] = {
+	{"im_class",	T_OBJECT,	OFF(im_class),	READONLY|RESTRICTED,
+	 "the class associated with a method"},
+	{"im_func",	T_OBJECT,	OFF(im_func),	READONLY|RESTRICTED,
+	 "the function (or other callable) implementing a method"},
+	{"im_self",	T_OBJECT,	OFF(im_self),	READONLY|RESTRICTED,
+	 "the instance to which a method is bound; None for unbound methods"},
 	{NULL}	/* Sentinel */
 };