Implement major architectural points

This patch adds a state stack and introduces some interfaces, such as GameState and View. It also refactors a View out of SimulationState.