Fixed GUI class not being initialized before PM

Moved GUI back into it's own file, and made the PM class initialize only
once "ModuleLoad" event has fired, to ensure the entire module is
loaded.