Delegated Routing (temporary while dht is shown to be correct)

@jbenet @mappum @whyrusleeping 

TODOs

- [ ] pick a serialization format for provider records. perhaps just proto message
- [ ] ~~extract database `Backend` from `grandcentral.Server`~~ create datastore
- [ ] pass config value (server | client) in from UX
- [ ] pick a peer/address/host for remote routing server
- [ ] finally, make this test pass: https://build.protocol-dev.com/job/ipfs-network-test-add-cat/
Its not weird to read through Go's source for fun, is it? :fearful: