Refactor transport package + fix design bugs

 - Parsers are now per-connection, and bundled with a *net.Conn as a
   transport.connection struct.

 - Remove the concept of "one local address per manager". Instead,
   permit listening on one or more addresses, and use existing sockets
   for sends if there are any sockets around. If not, generate new socks
   on random ports for sends.

TODO:
 - Re-implement UDP (currently turned off)
 - Implement proper cleanup methods for listening points