updated multiaddr + multiaddr-net

I broke out multiaddr/net to its own package so
that multiaddr parsing could remain lean. multiaddr-net
will vendor special implementations of protocols (like utp)
net/conn: moved zero addr error
config: swarm is list of addrs
config: nicer error to user
updated multiaddr + added utp
swarm: better err on listen fail
swarm: refactored multiconn creation
conn: added (*dialer).DialAddr
swarm: try all peer's addresses

For simplicity this is sequential. This will be bad latency given
RTTs for all the handshakes, etc. Later on can make async or
at least open based on some priority of the channel.
init: note about addrs
style(net/conn) fmt -> debugerror

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
feat(Dockerfile) expose UDP 4002 for swarm traffic

License: MIT
Signed-off-by: Brian Tiger Chow <brian@perfmode.com>
Merge pull request #369 from jbenet/utp

Add utp as a transport