bpo-36142: Add _PyPreConfig_SetAllocator() (GH-12187)

* _PyPreConfig_Write() now reallocates the pre-configuration with the
  new memory allocator.
* It is no longer needed to force the "default raw memory allocator"
  to clear pre-configuration and core configuration. Simplify the
  code.
* _PyPreConfig_Write() now does nothing if called after
  Py_Initialize(): no longer check if the allocator is the same.
* Remove _PyMem_GetDebugAllocatorsName(): dev mode sets again
  allocator to "debug".
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 2827e87..1f236a9 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -336,7 +336,6 @@
             'legacy_windows_fs_encoding': 0,
             'legacy_windows_stdio': 0,
         })
-    DEBUG_ALLOCATOR = 'pymalloc_debug' if support.with_pymalloc() else 'malloc_debug'
 
     # main config
     COPY_MAIN_CONFIG = (
@@ -589,7 +588,7 @@
 
     def test_init_env_dev_mode(self):
         config = dict(self.INIT_ENV_CONFIG,
-                      allocator=self.DEBUG_ALLOCATOR,
+                      allocator='debug',
                       dev_mode=1)
         self.check_config("init_env_dev_mode", config)
 
@@ -597,7 +596,7 @@
         config = {
             'dev_mode': 1,
             'faulthandler': 1,
-            'allocator': self.DEBUG_ALLOCATOR,
+            'allocator': 'debug',
         }
         self.check_config("init_dev_mode", config)