Issue #24268: Address some PEP 489 refleaks

- missing DECREF in PyModule_FromDefAndSpec2
- missing DECREF in PyType_FromSpecAndBases2
- missing DECREF in _testmultiphase module

Patch by Petr Viktorin
diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c
index 7a86a5b..7b41b0b 100644
--- a/Objects/moduleobject.c
+++ b/Objects/moduleobject.c
@@ -311,6 +311,7 @@
         }
     }
 
+    Py_DECREF(nameobj);
     return m;
 
 error:
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 9522ac5..2f1779f 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -2694,6 +2694,7 @@
 {
     PyHeapTypeObject *res = (PyHeapTypeObject*)PyType_GenericAlloc(&PyType_Type, 0);
     PyTypeObject *type, *base;
+    PyObject *modname;
     char *s;
     char *res_start = (char*)res;
     PyType_Slot *slot;
@@ -2807,11 +2808,15 @@
 
     /* Set type.__module__ */
     s = strrchr(spec->name, '.');
-    if (s != NULL)
-        _PyDict_SetItemId(type->tp_dict, &PyId___module__,
-            PyUnicode_FromStringAndSize(
-                spec->name, (Py_ssize_t)(s - spec->name)));
-    else {
+    if (s != NULL) {
+        modname = PyUnicode_FromStringAndSize(
+                spec->name, (Py_ssize_t)(s - spec->name));
+        if (modname == NULL) {
+            goto fail;
+        }
+        _PyDict_SetItemId(type->tp_dict, &PyId___module__, modname);
+        Py_DECREF(modname);
+    } else {
         if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                 "builtin type %.200s has no __module__ attribute",
                 spec->name))