Unify Connection and TCPConnection.
Use InetSocketAddress.
Pass Connection as parameter.
Refactor connection establishment.
Put Thread classes on different classes.
Handle thread and socket exceptions properly.
Remove packet only after successfully send message.
Pass more than one server address.
Merge branch 'feature/multiserver'