More Major refactoring
- moved some state into a dedicated GameState class to avoid circular dependency issues
- Made sure all managers are singletons to avoid hard-coded references to game's instances
- Removed obsolete function names in "this." declarations
- Resolved more broken references (and probably created some in the process)
- ensured update and init call the base components version and don't override it