feat: Introduce EventBroker as a comm. medium

New EventBroker abstraction should take care of any communication
within a cluster (both local/remote events). The event dispatching
should assume asynchronous execution, therefore all methods should
return Observables.
Simplify MessageBroker in favour of EventBroker.

MessageBroker was renamed to MessageGateway, since it only needs to
know how to transfer RemoteEvent to a given node. Refactored
HearbeatControllers to make use of EventBroker.