Support for modules #346

For #346 

1. Refactored ScriptRuntime into a ScriptContainerFactory it wraps. The factory can be passed in enabling the initial setup container to be reused without duplicating code. This is needed for loading modules in the same way as script packs are loaded.
2. Introduced module infrastructure. Not wired up yet / central modules folder is not created.
3. Added unit tests for module loader
4. Wired up -install -g and -clean -g to work off a global folder.