Stream relaying

This PR introduces stream relaying. This is a precursor to NAT traversal.
The RelayService should some day affect things like bitswap ledgers, but
for now it'll just be used for assisting NAT traversal (and possibly DHT
queries).

This PR also moves the inet.Network implementation into its own package.
More thinking on this suggests that there should be a distinction
between inet.Network, and some inet.NetworkBackend (or a 'peernet' pkg)
which provides the actual {stream, connection, address, peer} manager
impls (swarm, mock, etc) but leaves all the Protocol/Mux/Service stuff
to inet.Network.