Add simple client list to add/remove clients per #6
Add client login and server response per $6

Upon starting, the client will input a username to the server, which will
resond whether the login was successful (no user of same name and different ip
exists) or unsuccessful. The client will then enter message sending mode.
Fixed not skipping rest of loop in eb050457e07 #6
Update client to exit login loop if successful, #6
merge with master
Refactor server

Server now accepts message storage, message handler, and client list as
constructor arguments.
New class ServerMessageHandler must bind to server. This new class
handles messages received by the server and appropriately changes
sever storage and client list.
ServerMessageHandler must receive a message parser as input.
Server is now run from run_server.py
Fix messages.py