Huge commit. See description.

- Added level selector
- Added new map
- Super cleaned up code
- Consolidated the flow of data and processes (see SceneManager and
ResourceManager)
- Correctly dispose of old scenes when switching to new ones (we
recreate a new scene every time so we store less in memory)