Refactor ProtocolStream:
* Rename class
* Remove handler state variable
* Use template instead of abstract class for polymorphism
* API processes one message at a time instead of many
* Remove error_code from the ProtocolHandler concept requirements
[FOLD] Remove abstract interface
[FOLD] de-inline and tidy
[FOLD] only process one message at a time in ProtocolStream
[FOLD] reformat dispatch switch
[FOLD] break message loop on socket closure
[FOLD] Return void from protocol message handlers
[FOLD] style, rename members
Split peer connect logic to another class (RIPD-711):
All of the logic for establishing an outbound peer connection including
the initial HTTP handshake exchange is moved into a separate class. This
allows PeerImp to have a strong invariant: All PeerImp objects that exist
represent active peer connections that have already gone through the
handshake process.
[FOLD]
Fix to_string for beast::asio::streambuf
[WIP]