Add utp as a transport

This PR:
- cleans up swarm connection
- makes swarm try all peer's addresses (rather than just one)
- adds utp support
- adds a utp

Warning: the go uTP impl is still experimental and added here
as our "reliable-udp" solution (in prep for using go-natty).
Peers can still talk TCP with each other.
We'll also add UDT support, once we either implement it in Go,
or fix the arm problem + do the binary bundling.

Thanks very much to @h2so5 for implementing utp, and to
@whyrusleeping @maybebtc @anacrolix for contributing it.
We will want to make sure we arent connected to the same peer twice.