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/
woah!
```
	// If a value's address is taken but the address does not escape,
   175	// then the value can stay on the stack.  If the value new(T) does
   176	// not escape, then new(T) can be rewritten into a stack allocation.
   177	// The same is true of slice literals.
```