Adds GameState context for screens

Adds a game state along with state transitions implemented in a
primitive state machine like contrusct. This allows to define the
possible transitions from screen to screen.