Incomplete first pass at restructuring the files and decoupling the logic

So the big thing here is the ClientManager which is essentially the equivalent of the ServerThreadHandler if you were to decouple some of the logic.  Basically the ClientManager just handles the server's references to the clients and the open sockets over which it will communicate.  The ClientManager then relies upon a NetworkLayer for each connection to actually message actions over the wire.
This will be the bread and butter of the network communication.  So far this class is looking quite a bit like the ServerThread class, but again it is a bit more decoupled in the sense that it will only deal with the network aspect.