proof of concept network multiplayer

Server accepts two connections and creates two NetworkPlayers then
starts a GameManager with those players.

NetworkPlayer gets a move by sending a message to the Client and reading
its reply. It will then tell the server to send the move to the other
player.

Client keeps track of its own Board and a Player. Waits for messages
from the server and replies with a move from its Player or by playing
the opponent's move on its board.
add actual multiplayer functionality

Add simple GUI for clients.
Client loop ends when the game ends.
Add main methods for launching client and server.
add optional parameters to client Main
update ConnectNProtocol
update network functionality; add rematches

Server delegates games to a NetworkGameManager so that it can
(eventually) run multiple games. NetworkGameManager will ask Clients if
they want to rematch. A rematch will start with the opposite player
going first.

Network player can send and recieve arbitrary messages between the
server and clients.

Client has basic functionality to accept or reject rematches.

ConnectNProtocol updated to support rematches.
Merge branch 'master' into network
update Client to use changes to Board undoPlay
refactor Client
server can host multiple games

Server continuously accepts connections and adds them to a player pool.
If there are at least two players they are put into a game together. If
either player declines a rematch, the NetworkGameManager adds them both
back to the pool.
bugfix: client Main parameters
client exits when window is closed
update protocol

NetworkGameManager sends a start message to notify the client that a
game is starting.
update client status messages
Merge branch 'master' into network
Merge branch 'master' into network
update ClientPanel to use updated BoardPanel
add ClientListener interface
update Client to notify listeners
replace ClientPanel

Created ClientControl to replace ClientPanel. Uses FXML to define the
layout. Allows the user to specify the server they wish to connect to.
client disconnects gracefully when window closes

Added disconnect method to Client and ClientControl. This method is
called when the main window is closed.