Fix SF bug #486144: Uninitialized __slot__ vrbl is None.

There's now a new structmember code, T_OBJECT_EX, which is used for
all __slot__ variables (except __weakref__, which has special behavior
anyway).  This new code raises AttributeError when the variable is
NULL rather than converting NULL to None.
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 6fc5d02..16591cf 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -1059,11 +1059,13 @@
 		for (i = 0; i < nslots; i++, mp++) {
 			mp->name = PyString_AS_STRING(
 				PyTuple_GET_ITEM(slots, i));
-			mp->type = T_OBJECT;
+			mp->type = T_OBJECT_EX;
 			mp->offset = slotoffset;
 			if (base->tp_weaklistoffset == 0 &&
-			    strcmp(mp->name, "__weakref__") == 0)
+			    strcmp(mp->name, "__weakref__") == 0) {
+				mp->type = T_OBJECT;
 				type->tp_weaklistoffset = slotoffset;
+			}
 			slotoffset += sizeof(PyObject *);
 		}
 	}