Switch to broker-based native networking backend

This patch removes the classes `peer` and `peer_acceptor` and replaces them
with `native_broker`. The middleman no longer knows about peers, it only knows
about brokers. The peer-based design predates brokers and doesn't make much
sense now that brokers are available. A broker-based design is much cleaner,
removes duplicate (or at least semantically equal) code and further reduces the
complexity of the middleman. Additionally, it makes peers first class citizens,
because brokers are actors. This makes communicating with peers much more
simple and straightforward.