net-io

(after #442)

This PR changes net to use `io` instead of channels.
At the moment it's just `conn`, but soon more.
first impressions on this interface?

```Go
type LinkOptions struct {
	Latency   time.Duration
	Bandwidth int // in bytes-per-second
	// we can make these values distributions down the road.
}

type Link interface {
	Networks() []inet.Network
	Peers() []peer.Peer

	SetOptions(LinkOptions) 
	Options() LinkOptions

	Metrics() Metrics
}

type Mocknet interface {
	AddPeer(peer.Peer) inet.Network

	Peers() []peer.Peer
	Nets() []inet.Network

	ConnectPeers(peer.Peer, peer.Peer) Link
	ConnectNets(inet.Network, inet.Network) Link

	Disconnect(Link) error
	DisconnectPeers(peer.Peer, peer.Peer) error
	DisconnectNets(inet.Network, inet.Network) error

	LinksBetweenPeers(peer.Peer, peer.Peer) []Link
	LinksBetweenNets(peer.Peer, peer.Peer) []Link

	SetLinkDefaults(LinkOptions)
	LinkDefaults() LinkOptions
}

```