Fix for #489669 (Neil Norwitz): memory leak in test_descr (unicode).

This is best reproduced by

  while 1:
      class U(unicode):
          pass
      U(u"xxxxxx")

The unicode_dealloc() code wasn't properly freeing the str and defenc
fields of the Unicode object when freeing a subtype instance.  Fixed
this by a subtle refactoring that actually reduces the amount of code
slightly.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index c456b57..68afaa0 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -226,11 +226,8 @@
 static
 void unicode_dealloc(register PyUnicodeObject *unicode)
 {
-    if (!PyUnicode_CheckExact(unicode)) {
-	unicode->ob_type->tp_free((PyObject *)unicode);
-	return;
-    }
-    if (unicode_freelist_size < MAX_UNICODE_FREELIST_SIZE) {
+    if (PyUnicode_CheckExact(unicode) &&
+	unicode_freelist_size < MAX_UNICODE_FREELIST_SIZE) {
         /* Keep-Alive optimization */
 	if (unicode->length >= KEEPALIVE_SIZE_LIMIT) {
 	    PyMem_DEL(unicode->str);
@@ -249,7 +246,7 @@
     else {
 	PyMem_DEL(unicode->str);
 	Py_XDECREF(unicode->defenc);
-	PyObject_DEL(unicode);
+	unicode->ob_type->tp_free((PyObject *)unicode);
     }
 }