Peerstore Fix

This PR changes Net, Swarm, SecurePipe to take a Peerstore.
Whenever they interact with a new peer (say, an incomming conn,
or by somebody calling Dial), it adds the given peer to the Peerstore.

This should fix the problem where peers are at some point given to the
network and/or dht that are not in the peerstore at all. (this panics
atm, to find bugs).
Oh i should remove that `//TODO`, that's what this PR is about :)

`c.Addr` is coming from the connection, cause we can figure out a `Multiaddr` from a `net.Conn`:

- https://github.com/jbenet/go-ipfs/blob/feat/peerstorefix/net/conn/conn.go#L107-L109
- https://github.com/jbenet/go-multiaddr/blob/master/net.go#L11