Issue #2377: Make importlib the implementation of __import__().

importlib._bootstrap is now frozen into Python/importlib.h and stored
as _frozen_importlib in sys.modules. Py_Initialize() loads the frozen
code along with sys and imp and then uses _frozen_importlib._install()
to set builtins.__import__() w/ _frozen_importlib.__import__().
diff --git a/Include/abstract.h b/Include/abstract.h
index 4a27bfb..e879fa1b 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -339,6 +339,10 @@
 
      PyAPI_FUNC(PyObject *) PyObject_CallMethodObjArgs(PyObject *o,
                                                        PyObject *method, ...);
+     PyAPI_FUNC(PyObject *) _PyObject_CallMethodObjIdArgs(PyObject *o,
+                                               struct _Py_Identifier *method,
+                                               ...);
+
 
        /*
      Call the method named m of object o with a variable number of
diff --git a/Include/dictobject.h b/Include/dictobject.h
index 63c810e..24c38f5 100644
--- a/Include/dictobject.h
+++ b/Include/dictobject.h
@@ -109,6 +109,8 @@
 PyAPI_FUNC(PyObject *) PyDict_New(void);
 PyAPI_FUNC(PyObject *) PyDict_GetItem(PyObject *mp, PyObject *key);
 PyAPI_FUNC(PyObject *) PyDict_GetItemWithError(PyObject *mp, PyObject *key);
+PyAPI_FUNC(PyObject *) _PyDict_GetItemIdWithError(PyObject *dp,
+                                                  struct _Py_Identifier *key);
 PyAPI_FUNC(int) PyDict_SetItem(PyObject *mp, PyObject *key, PyObject *item);
 PyAPI_FUNC(int) PyDict_DelItem(PyObject *mp, PyObject *key);
 PyAPI_FUNC(void) PyDict_Clear(PyObject *mp);
diff --git a/Include/import.h b/Include/import.h
index 45544111..bc21ae2 100644
--- a/Include/import.h
+++ b/Include/import.h
@@ -7,6 +7,9 @@
 extern "C" {
 #endif
 
+PyAPI_FUNC(void) _PyImportZip_Init(void);
+
+PyMODINIT_FUNC PyInit_imp(void);
 PyAPI_FUNC(long) PyImport_GetMagicNumber(void);
 PyAPI_FUNC(const char *) PyImport_GetMagicTag(void);
 PyAPI_FUNC(PyObject *) PyImport_ExecCodeModule(
diff --git a/Include/pystate.h b/Include/pystate.h
index 1bbb4e2..68d512b 100644
--- a/Include/pystate.h
+++ b/Include/pystate.h
@@ -25,6 +25,7 @@
     PyObject *modules_by_index;
     PyObject *sysdict;
     PyObject *builtins;
+    PyObject *importlib;
     PyObject *modules_reloading;
 
     PyObject *codec_search_path;
@@ -33,6 +34,7 @@
     int codecs_initialized;
     int fscodec_initialized;
 
+
 #ifdef HAVE_DLOPEN
     int dlopenflags;
 #endif
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index 74ab986..48e39a4 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -188,7 +188,7 @@
 PyAPI_FUNC(PyObject *) _PyBuiltin_Init(void);
 PyAPI_FUNC(PyObject *) _PySys_Init(void);
 PyAPI_FUNC(void) _PyImport_Init(void);
-PyAPI_FUNC(void) _PyExc_Init(void);
+PyAPI_FUNC(void) _PyExc_Init(PyObject * bltinmod);
 PyAPI_FUNC(void) _PyImportHooks_Init(void);
 PyAPI_FUNC(int) _PyFrame_Init(void);
 PyAPI_FUNC(void) _PyFloat_Init(void);