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`
- [ ] 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/
let's not call this tracker. tracker has specific connotations in p2p (namely BT trackers), which is related but significantly different. Let's call it "delegated" routing (you route through whatever the delegate says)