Add a simple message broker which uses the chain of responsibility design pattern for
message handling.
Inspired by this article: http://www.softwarematters.org/message-broker.html#java-implementation
In this design, a message handler can contain a reference to the next
message handler. If the current handler cannot handle the message given
to him by the MessageBroker, he passes this message to the next
MessageHandler.
The chain of responsibility pattern is used in order to decouple the creation of a
concrete message instance from the broker communication logic. This adheres to the Open
Closed Principle, because it is possible to add a new message type without modifying the
message broker.