[Compiler] Move ModuleLoader out of IR.
This commit moves the ModuleLoader class into its own header and
source files and out of the IR namespace and subdirectory, as the
ModuleLoader is a worker object not a data object and thus doesn't
belong to the IR.
It also changes the API of File not to allow import of a
ImportDefinition, but to offer adding a module directly. That means,
the caller has to take care of creating the module himself. That
involves slightly more work for the caller, but reflects the idea of
the IR as a data structure to work with better, as now the IR doesn't
do any actual work anymore.