Offer name system crate featuring `get_record` and `put_record` implementations
This issue is meant to kick us off on the development of the pet name system described in #12 . Essentially, we should add a crate to our repertoire that will serve as the kernel of the name system. We have not decided if the name system will be integrated as a stand-alone process or some kind of worker thread in the gateway, so the crate should probably begin its life as a library.
There is a rather fresh Rust libp2p implementation here: https://github.com/libp2p/rust-libp2p
The first milestone for this crate should be to expose a library that makes it easy to stand up a peer using libp2p, query the DHT with get_record and publish to the DHT with put_record. We can scaffold most of this with off-the-shelf libp2p implementation, and that will give us enough to experiment with the practical qualities of their Kademlia implementation.