first steps towards implementing game

* Free monad representing game state changes
* todo: "interpreters" that
    - compile messages to be sent to clients,
    - update the game state on the server.