Seperated out creation of module configuration from module itself.

This allows late bound discovery of the "real" module name so that modules imported with different paths or prefixes that
resolve to the same module are cached as the same not different modules.
Rework property and configuration support
Changed InvalidArgumentException to a caught exception