Currently we can't install the modulemaps provided by LLVM, since they are not structured to support headers generated as part of the build (ex. llvm/IR/Attributes.gen).
This patch restructures the module maps in order to support installation.
Modules containing generated headers are defined in the new module.extern.modulemap file, and are referenced from the main module.modulemap using extern module. There are two versions of the module.extern.modulemap file; one used when building and another, module.install.modulemap, which is re-named during installation.
Users can opt-into module map installation using -DLLVM_INSTALL_MODULEMAPS=ON. The default value is OFF due to llvm.org/PR31905.