Increase server robustness
add state enum to client
Convert Mock Server/Client to use condition vars
Improve MockClient

If the connect condition variable has not been set by the time the
connection is accepted, wait until the variable has been set
Server only accept connections according to state
Improve client-server interaction

When a GameController recieves an event, it will have the option to
return an Event that will be sent only to the sender.

Server acknowledges KeyEvent by returning it to Client

Mock Server/client to use Condition variable for synchronization

Various other synchronization fixes
SimulationTimer to reset properly
add Test for timer restart
Server to acknowledge GameKeyEvents from client

MockServer no longer required to create MockClient due to this
Player to set state to idle when notified of death
Condition to wait for timeout
MockClient to implement its own waiting mechanism
MockClient to use new abstract PlayableClient class
Remove Demo Runner
Add Game Key Acknowledge Event
Merge pull request #78 from oharaandrew314/#65-robust-server

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