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