updated design, details in description

CommunicationLayer and Display no longer directly contact each other and
now use ChatClient as an intermediary. This may change back later.
MessageFetcher is a helper class of CommunicationLayer as it's only duty
is to listen to the server for messages for the CommunicationLayer to
interpret. Currently working on exiting the application smoothly.