A composite MessageHandler implementation that invokes a chain of
MessageHandler instances in order.

Each of the handlers except for the last one must implement the
MessageProducer interface. The last handler must also if
the chain itself has an output channel configured. No other assumptions
are made about the type of handler.

It is expected that each handler will produce reply messages and send them to
its output channel, although this is not enforced. It is possible to filter
messages in the middle of the chain, for example using a
MessageFilter. A MessageHandler returning null will have the
same effect, although this option is less expressive.

This component can be used from the namespace to improve the readability of
the configuration by removing channels that can be created implicitly.