DHT PR

This PR will be for CR and conversation on the DHT.
hm, no i think the `GetValue` call should resolve the entire thing (meaning, don't return until we have the value). (It should be running in a goroutine to not block other things, etc, but we want to provide a nice layer of abstraction where the client doesn't have to worry about multiple nodes, or continuing the search, etc)