Refactor TCPSocket into Socket

Socket exposes primitives relating to sockets, but no initializer.

Implement TCPSocket that derives Socket, and implements init, bind,
listen and connect
Implement TCP6Socket as a derivative of Socket