text: Title: [Refactoring] Use PeerID instead of DHTID 
  Body: Currently, hivemind.dht uses a specialized identity data structure called [DHTID](https://github.com/learning-at-home/hivemind/blob/master/hivemind/dht/routing.py#L250).
  
  This data strucuture is very similar to another one called [PeerID](https://github.com/learning-at-home/hivemind/blob/2f07a556e6e014073a1c9836e7bd53039bc4c433/hivemind/p2p/p2p_daemon_bindings/datastructures.py#L39), which is used for libp2p interaction.
  
  It appears that we can significantly simplify hivemind.dht by reusing PeerID from libp2p bindings. For that reason, we should
  * [ ] figure out if it is possible to compute PeerID as a hash function of arbitrary sequence of bytes
    * for DHT to work properly, the PeerID obtained from byte sequences must have the same "probability distribution" as those obtained by spawning P2Pd instances
  * [ ] Figure out if we can remove DHTID class in favor of PeerID in all DHT functions
  * [ ] Figure out if we can simplify hivemnd/dht/routing_table.py to remove dictionary-like structure
  * Simplify hivemind/proto/dht.proto
    * [ ] Figure out if we can remove NodeInfo from hivemind/proto/dht.proto(and .peer from all protocols)
    * [ ] Figure out if we can remove neared_node_ids from FindResult
    * [ ] other ideas on how to simplify DHT?