C++ interop should support both code that uses the msvc++ runtime and code that uses libc++.
This is accomplished by entering a special libc++ import context when loading a set of specified Clang modules that depend on libc++ instead of msvc STL.
[x] preload 'ucrt' without libc++ context when transitioning into libc++ context.
[x] rename the imported 'std' modules in the imported libc++ module map.
[x] rename the imported 'std' namespace in the imported libc++.
[x] NOT NEEDED: resolve the decl conflicts between imported libc++ and msvc STL.
[x] adjust the import paths correctly when transitioning into libc++ context.
[x] NOT NEEDED: reset the import paths when leaving the libc++ context.
[x] Verify that libc++ module reference don't pass through the Swift module boundary
C++ interop should support both code that uses the msvc++ runtime and code that uses libc++.
This is accomplished by entering a special libc++ import context when loading a set of specified Clang modules that depend on libc++ instead of msvc STL.