INT-3131: Compatibility with SPR 4.0

Polishing tests to follow with new changes in the SPR 4.0
Polishing build.gradle to be compatible with SPR 4.0

Build passes with SPR 3.2.4 too

JIRA: https://jira.springsource.org/browse/INT-3131
INT-3124 Add JMX MBean Tree Inbound Adapter

Add an MBeanTreePollingMessageSource that produces a graph of simple objects representing the JMX tree (INT-3124).

The DefaultMBeanObjectConverter converts MBean objects into a graph of Lists, Maps and arrays or primitives.

Formatting tidy, per feedback.

Feedback incorporated: split setter/attributes, more tests, inner bean constructor, logging changes.

Overloaded setter methods with different parameter types are now named separately, the endpoint attributes reflect this and tests are added to reflect this.

An inner bean can be supplied to provide an alternative MBeanObjectConverter.

Log a warning instead of a more destructive UnsupportedOperationException where there's incomplete parsing in the DefaultMBeanObjectConverter and add a trace level for exception debugging.

Minor test change and doc/reference update

Added attribute filter interface as suggested. Three implementations are provided 'all', 'named only' and 'not named'

actually add notnamedfield filter (doh).

Polishing
INT-3124 Make Test Domains Unique

Gradle build failed with InstanceAlreadyExistsException.

Make domains unique in new tests and the one that failed.
INT-2917 Doc: Add "Requirements" Chapter

Also addresses:

* INT-3128 Remove old SpringSource logo

INT-2917 Fix versions

INT-2917 Polishing

INT-2917 Fixed wording
INT-3070: Fix Delayer with MongoDbMessageStore

The `DelayHandler.DelayedMessageWrapper` works correctly, as designed by INT-3049.
However `DelayHandler.DelayedMessageWrapper` contains `Message` as a property
and `GenericMessage` can't be reconstructed automatically.

So, added new `DBObjectToGenericMessageConverter` to read `GenericMessage` for
`DelayHandler.DelayedMessageWrapper#original` property.

JIRA: https://jira.springsource.org/browse/INT-3070

Cherry-picked 2.2.x

INT-3070: PR comments

INT-3070: Remove `assert` for common state
INT-3124 JMX Check Mutually Exclusive Attributes

Only one of query-name and query-name-ref
Only one of query-expression and query-expression-ref
INT-3114 Call MessageHandlers Directly

Invoke ARPMH Directly (SA, Splitter etc)

If a bean referenced by a service activator etc, is already an ARPMH,
then wire it directly into the endpoint rather than wrapping it in a
MethodInvoking Handler.

Disallow the same bean being used in this way in multiple endpoints.
It would cause rewiring of outputChannel etc.
Detect such use and suggest using prototype scope.

Previously, an ARPMH used in a MethodInvokingHandler didn't work
in some cases, because the "inner" ARPMH had no output-channel
and the outer ARPMH (e.g. transformer) wouldn't get a reply and
would complain if requiresReply is set.

The general solution is to detect the ARPMH targetObject in
AbstractStandardMessageHandlerFactoryBean, invoke canBeUsedDirect()
to allow the subclass to vote - specifically it will be allowed
if the type is not also a special type understood by the subclass
and no endpoint-specific attributes are set.

To this end, remove a few default attributes from the schema to
enable detection of explicit setting of these attributes.

If these conditions pass and the method is handleRequest (either
explicitly or by omission) then wire it in and invoke the
subclass to post process the handler (set attributes).

Restructure this post processing in each subclass so that it can be invoked in
this way, or directly by the subclass when it makes a custom
handler.

Polishing - PR Comments

Mainly a little refactoring in the RouterFactoryBean to allow
the parameter in canBeUsedDirect() to be an ARPMH instead of
Object.

Plus a couple more minor changes.
INT-1639: Add <spel-function> support

* add `<spel-function>` XSD element
* add `SpelFunctionParser`
* add `SpelFunctionRegistrar` to avoid introducing some confused 'Method'-bean
* add `SpelFunctionRegistrar` collaboration with `IntegrationEvaluationContextFactoryBean`
* some refactoring for `IntegrationEvaluationContextFactoryBean`
* polishing some failed tests after this change

JIRA: https://jira.springsource.org/browse/INT-1639

INT-1639: SpelFunctionParser use BeanClassLoader

INT-1639: Inherit 'functions' from parent AC

INT-1639: Document the <spel-function>

INT-1639: 'NoSuchBeanDefinitionException' fix

Polishing
INT-3122 Return String Properties as String

Make converted object toString() behave as expected
INT-3132 Add minSubscribers to Pub/SubChannel

Send is deemed to be successful if sent to at least this
number of subscribers (default 0).

Note: when using a task executor, if there is at least one
subscriber, a send is always good, regardless of success
or failure of invoking the handler.

Polishing - Docs - PR Comments
[artifactory-release] Release version 3.0.0.M3
Revert Version to 3.0.0.BUILD-SNAPSHOT
Add Artem to POM Developer List
Contributing wiki: JIRA links note
INT-3075: Note regarding HTTP Status Code

JIRA: https://jira.springsource.org/browse/INT-3075
INT-3138: add `awaitTermination` to delayer tests

`DelayerHandlerRescheduleIntegrationTests` fail sometimes
on asserts. Looks like `context.destroy()` works very slow
and `<delayer>` manages to send delayed Messages

JIRA: https://jira.springsource.org/browse/INT-3138
INT-3092, INT-3042: Doc: Jacksons, Resequencer

JIRA: https://jira.springsource.org/browse/INT-3042
https://jira.springsource.org/browse/INT-3092
INT-3120: Remove `Accept-Charset` from Response

`StringHttpMessageConverter` adds `Accept-Charset` header by default.
By RFC 2616 `Accept-Charset` is a Request header,
so it won't be presented in the response.

Turn off `writeAcceptCharset` in the `HttpRequestHandlingEndpointSupport`.

JIRA: https://jira.springsource.org/browse/INT-3120
INT-2117: Test that trim() Works in the AMMR

* `AbstractMappingMessageRouter#addChannelFromString` uses
`StringUtils.tokenizeToStringArray`, so it's enough to check it from test.

JIRA: https://jira.springsource.org/browse/INT-2117
INT-3117: Add r-c & r-t Attrs. to Chain Gateways

* Add `reply-channel` and `reply-timeout` to `<gateway>` within `<chain>`
* Add appropriate asserts to `ChainParserTests`

JIRA: https://jira.springsource.org/browse/INT-3117