dht find connected peers

This PR extends the DHT to send information re: peer "connectedness".
This means that --upon resolving dht queries -- connected peers will
signal whether or not they are directly connected to the peer. this is
in preparation for mesh messaging, and our "STUN" for NAT traversal.
more generally, i'm coming to think that returning `err` all over the place can actually lead to harder to debug things than well understood panics. it treats `error` as a catch-all, instead of purposeful error handling of things known to go wrong. imagine if index errors returned `err` in slices? the stdlib panics all over the place to signal what we definitely shouldnt do.