Add AddressBook to keep track of clients

During initialization the viewer and the controller send a
ViewerHandShake and a ControllerHandShake to the server, respectively.
The server then adds the SocketAddresses to the AddressBook.

The server sends entities to any viewer that sent a ViewerHandShake. The
server will only process InputEvents for a player from the first
controller that sent a ControllerHandshake with that player as the
FocusPlayer.