INT-2831: Add Jackson 2 support

Add Jackson 2 support while retaining backward compatibility as much as possible.

Introduce a new abstraction for JSON conversion.

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

INT-2831: Polishing

* remove `JsonObjectMapperFactoryBean`
* add @Deprecated constructors to `ObjectToJsonTransformer` and `JsonToObjectTransformer`

Polishing

Docs, compiler warnings.
Merge pull request #774 from artembilan/INT-2831

* INT-2831:
  INT-2831: Add Jackson 2 support
INT-2935: Improve `AELMP` performance

Before `ApplicationEventListeningMessageProducer` accepted all `ApplicationEvent`'s and than filtered them.
It caused some `ApplicationEventMulticaster.retrieverCache` overhead.

* Improve `ApplicationEventListeningMessageProducer` to `implements SmartApplicationListener`.
It allows to make filtering earlier on first appropriate `ApplicationEvent` from `ApplicationEventListeningMessageProducer#supportsEventType`
 and caching the `ApplicationListener` only for that `ApplicationEvent`.
* Re-register `ApplicationEventListeningMessageProducer` in the `ApplicationEventMulticaster` on `ApplicationEventListeningMessageProducer#setEventTypes`
to clear `ApplicationEventMulticaster.retrieverCache` and make filtering on next the `ApplicationEvent`.
* Move `org.springframework.integration.gemfire.inbound.SpelMessageProducerSupport` to core `ExpressionMessageProducerSupport` as useful component.
* Add test about new logic of `ApplicationEventListeningMessageProducer` and its behavior with respect to the `ApplicationEventMulticaster.retrieverCache`.

JIRA: https://jira.springsource.org/browse/INT-2935
INT-2935: EMPS JavaDoc & AELMP ReadWriteLock
INT-2935: AELMP#eventTypes changing 'barrier'
INT-2935: avoid 'eventTypes' mutation afterwards
INT-2935: Polishing according PR comments