Change what is passed into the HostManager and ClientManager (Manager in general). We should be passing in the MessageInterpreter directly, not the stuff we need to make factories. Additionally, consider whether the sending queue (LinkedBlockingQueue) should be passed into the Manager instead: it may make unit testing easier if that's a problem.
Consider whether Manager should remain an abstract class or become an interface, especially once it no longer creates the MessageInterpreter.
Add unit tests for each component. Mocking can be used here so tests should work fine.
Follow up to PR #55.
Non-exhaustive list of things to do: