Write Network Connection class.

This is the core network-enabled class that communicates through enet. It understands the hand-shaking process and keeps the enet connection alive, sending and receiving packets as needed.

The surface of this API should be an address that the player can connect to, and provide an Authentication Token.

From here on, individual system-message-send functions should be provided like SendJoinArena, SendMessage, SendPlayerInput, SendQuit, and so on.

Likewise, the system-message-receive should be OnDisconnectReceived, OnGameStateReceived, OnPlayerJoinReceived, OnPlayerLeaveReceived, OnMessageReceived and so on. These should be coded as lambdas so that the upper layer can pass in the handler.