bpo-36444: Add _PyCoreConfig._init_main (GH-12572)

* Add _PyCoreConfig._init_main: if equals to zero,
  _Py_InitializeFromConfig() doesn't call
  _Py_InitializeMainInterpreter().
* Add interp_p parameter to _Py_InitializeFromConfig().
* pymain_init() now calls _Py_InitializeFromConfig().
* Make _Py_InitializeCore() private.
diff --git a/Include/cpython/coreconfig.h b/Include/cpython/coreconfig.h
index 827a19a..53493ff 100644
--- a/Include/cpython/coreconfig.h
+++ b/Include/cpython/coreconfig.h
@@ -365,6 +365,9 @@
        If set to -1 (default), inherit Py_FrozenFlag value. */
     int _frozen;
 
+    /* If non-zero, use "main" Python initialization */
+    int _init_main;
+
 } _PyCoreConfig;
 
 #ifdef MS_WINDOWS
@@ -398,7 +401,8 @@
         .buffered_stdio = -1, \
         ._install_importlib = 1, \
         ._check_hash_pycs_mode = "default", \
-        ._frozen = -1}
+        ._frozen = -1, \
+        ._init_main = 1}
 /* Note: _PyCoreConfig_INIT sets other fields to 0/NULL */
 
 
diff --git a/Include/cpython/pylifecycle.h b/Include/cpython/pylifecycle.h
index 1db1d21..496dcb2 100644
--- a/Include/cpython/pylifecycle.h
+++ b/Include/cpython/pylifecycle.h
@@ -20,9 +20,6 @@
 PyAPI_FUNC(_PyInitError) _Py_PreInitializeFromConfig(
     const _PyCoreConfig *coreconfig);
 
-PyAPI_FUNC(_PyInitError) _Py_InitializeCore(
-    const _PyCoreConfig *config,
-    PyInterpreterState **interp);
 PyAPI_FUNC(int) _Py_IsCoreInitialized(void);
 
 
@@ -32,7 +29,8 @@
 /* Initialization and finalization */
 
 PyAPI_FUNC(_PyInitError) _Py_InitializeFromConfig(
-    const _PyCoreConfig *config);
+    const _PyCoreConfig *config,
+    PyInterpreterState **interp_p);
 PyAPI_FUNC(void) _Py_NO_RETURN _Py_ExitInitError(_PyInitError err);
 
 /* Py_PyAtExit is for the atexit module, Py_AtExit is for low-level