Major rewrite of GameManager and others for cleaner API and caching

Big change: GameManager caches a list of activeBodies for other objects
to reference, as well as manages all pooling-related object management.
Generalized behaviour w/ enums