First implementation of minimal Broker API

As outlined above, I'm not exactly championing the combination of routing responsibilities in this class. I see a "router" as a more abstract concept which is based on simple things like senders, receivers, messages, etc.

In addition, this implementation hard-codes multiple assumptions: 

- Routing is done only by message type. A handler cannot be selected by specific message content. This makes it impossible to implement user-level routing strategies, e.g. if we have messages of the same type which should be routed to different application objects.
- There is only one handler per type. Implementing a chain of handlers would be possible in theory, however, then we would need to introduce the notion of "handled" (or not) to make sure a message is handled at most once (which in itself is a pretty concrete assumption).