Added ModuleFactory and moved creation code into there
Changed CreateModules to a static function
It doesn't make sense as a non-static function
Decoupled SimpitManager from the modules, it now uses the factory to create the modules