Support many peers

* The accepting server will broadcast a new peer to all existing peers and also ask to be a peer of the newly added peer.
* Fetching a key across peers still is naively implemented so it will only work when there is exactly two peers. 
* I moved the peer logic into it's own object called `Peer` which has it's own `Handle` method that takes a `* PatternServeMux`. I think this will be a good pattern going forward to add "middleware" to the server as we need to but also allowing us to test in isolation as we need to.