DHT PR

This PR will be for CR and conversation on the DHT.
this could panic. should prob:

```
p, ok := e.Value.(*peer.Peer)
if !ok { return nil, err }
```

(or is it ok to assume it will be a peer because we establish that invariant?)