More inversion of control on tcp sockets

One of the problems with `TcpClient` was that there was no good way to easily
tell if there was more data or not. Now all data read from a socket will be
wrapped in a `Finishable[A]`. A `Finishable[A]` will be either a `More[A]` or
a `Done[A]`. `More[A]` wraps the read data and signifies that theres more data
to be read from the socket and `Done[A]` wraps the read data and signifies that
we have reached the end of the socket's data (socket close).