A take on re-implementing channels (WIP- don't merge)

This is WIP and not yet finished.

ServerConnection abstraction is identical to MessageBroker. The latter name is a bit unfortunate, and it stems from my initial idea to have Rx-style message broker intermediary with a set of features embedded. I propose to remove ServerConnection class hierarchy, and rename MessageBroker to ServerConnection + do some adjustments if needed.