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/
I didn't know the compiler would transform `new` into a stack allocated variable.

:tmyk: :rainbow: