Separate game core from player and platforms

This restructuing more cleanly defines the boundaries
between the core game logic and that of the player
and platforms. Furthermore, it provides the foundation
for multiple player instances.