bpo-40521: Make list free list per-interpreter (GH-20642)

Each interpreter now has its own list free list:

* Move list numfree and free_list into PyInterpreterState.
* Add _Py_list_state structure.
* Add tstate parameter to _PyList_ClearFreeList()
  and _PyList_Fini().
* Remove "#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS".
* _PyGC_Fini() clears gcstate->garbage list which can be stored in
  the list free list. Call _PyGC_Fini() before _PyList_Fini() to
  prevent leaking this list.
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 1dbdbfd..09d4d88 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1251,8 +1251,8 @@
 {
     _PyFrame_Fini(tstate);
     _PyTuple_Fini(tstate);
+    _PyList_Fini(tstate);
     if (is_main_interp) {
-        _PyList_Fini();
         _PySet_Fini();
         _PyBytes_Fini();
     }
@@ -1296,6 +1296,8 @@
         _PyGC_CollectNoFail();
     }
 
+    _PyGC_Fini(tstate);
+
     finalize_interp_types(tstate, is_main_interp);
 
     if (is_main_interp) {
@@ -1309,8 +1311,6 @@
 
         _PyExc_Fini();
     }
-
-    _PyGC_Fini(tstate);
 }