#65 #67 Make server more robust and improve client-server interaction

GameControllers to use state enum
GameControllers to be able to return an event to respond to client who sent it
NetworkController does not keep track of whether it is accepting peers; the GameController does
Server acknowledges KeyEvent by replying it to client who sent it
Improve synchronization in various unit and integration tests