Use a separate strategy for creating batch message

Update batching message handler to use a separate MessageBatcher to
turn the batch's list of messages into a single message that represents
the batch. A default implementation that creates a message that has a
list of all of the messages' payloads as its payload is provided.

In addition to this, a reusable HeaderMerger abstraction has been
created.  A HeaderMerger is typically used by a MessageBatcher to merge
together the headers of the messages in the batch. Three implementations
are provided, ConflictDiscardingHeaderMerger, FirstWinsHeaderMerger, and
LastWinsHeaderMerger.

ConflictDiscardingHeaderMerger provides the same logic as was used in 
AbstractAggregatingMessageGroupProcessor. This class has been updated
to use the new header merger, while still allowing the behaviour to be
overridden by subclasses.
Add XML namespace support for ring buffer channel

Ring buffer channels can now be easily configured using the XML
namespace. For example:

<ring-buffer-channel id="ringBufferChannel"/>
<ring-buffer-channel id="ringBufferChannel" size="4096"/>

A custom error handler can also be specified, along with dispatcher
configuration. The task-executor attribute of the dispatcher
configuration is not supported by a ring buffer channel. Currently,
an attempt to use it will cause a failure during parsing of the 
application context.

To support the namespace, a number of setter methods have been added
to RingBufferChannel to make it more configurable.