Build on top of Spring 4's new messaging types

Spring 4 contains new Message, MessageChannel, MessageHandler, and
SubscribableChannel interfaces, heavily inspired by the interfaces of
the same name in Spring Integration. The corresponding Spring
Integration interfaces have been updated to extend the new Spring
interfaces.

Spring 4 also contains GenericMessage and MessagesHeaders classes. The
corresponding Spring Integration classes have been updated to extend
the new Spring classes.

Spring also contains a static MessageBuilder that's used to build
Message instances. It uses a MessageFactory implementation to control
the concrete Message type that's created by the builder.
DefaultConfiguringBeanFactoryPostProcessor has been updated to inject
a MessageFactory implementation into Spring's MessageBuilder that
creates Spring Integration GenericMessage instances.

The above described changes enable interoperability between Spring's
new messaging infrastructure and existing Spring Integration
infrastructure while also maintaining backwards compatibility in.
Spring Integration.
Fix the tests when running on Spring 4

For a reason I don't yet understand, a call to refresh is now
necessary on a number of tests' application context. It looks like
Spring's behaviour may have changed in Spring 4?

Also, a new getCookies method has been added to HttpMessage in Spring.
This method has been implemented in couple of inner classes in
CookieTests.
Use types that have moved into Spring 4
Cope with parameter name change due to SPR-9985

SPR-9985 means that, by default, parameter names in MBeanInfos will no
longer be named p1, p2, etc but, instead, will use names discovered
in the local variable table. This means that
OperationInvokingMessageHandler's approach of using a Map keyed by
p1, p2, etc no longer works.

OperationInvokingMessageHandler has been updated to instead, use a
Map, looking up the parameters by name, when the message's payload is
a map, and to use a list, looking up the parameters by index, when
the message's payload is a list.
Create and use EiMessageHeaderAccessor

In the move to being part of core Spring, a number of constants and
header accessor methods have moved from MessageHeaders to
MessageHeaderAccessor. This commit continues this pattern for
the enterprise integration headers that are specific to Spring
Integration. A new class, EiMessageHeaderAccessor, has been created.
This class provides constants and methods for working with SI-specific
headers. The main code and tests have been updated to use this new
class.
Prevent Rome from pulling in old version of Xerces

In a recent update (60532cbd), Spring's started calling 
DocumentBuilderFactory.setFeature(). This method isn't implemented by
the version of Xerces that Rome depends upon, resulting in
AbstractMethodErrors being thrown. To overcome this, the Xerces
dependency has been excluded when declaring the dependencies on Rome.
Depend upon spring-messaging

Spring's messaging types have moved from spring-context to
spring-messaging. The project dependencies have been updated to
depend upon spring-messaging.
Further Spring 4 updates.

Depend upon the types in the new spring-messaging module. Requires a
post-M2 snapshot.

The default message converter no longer supports conversion of a
message that is null, throwing an IllegalArgumentException if an
attempt is made to convert null. Furthermore, GenericMessagingTemplate
does not support sending null, again throwing an
IllegalArgumentException. Previously, MessagingTemplate had no-oped an
attempt to send null.

ConcurrentAggregatorTests and AggregatorTests both had a single test
that was specifically testing the behaviour of an aggregator that
returns null for its message. These tests have been removed.

CorrelatingMessageHandlerTests have been updated to specify some
additional behaviour for its mocks so that null messages are not
returned.

These are the only functional changes that have been made. All other
changes are simply for moving to the repackaged and/or renamed types.