Add RabbitMessagingTemplate

This commit provides a Rabbit implementation of standard messaging
interfaces available in the spring framework. These are
MessageSendingOperations for sending standard Messages,
MessageReceivingOperations to receive a protocol specific content
and return the standard Message counter part and
MessageRequestReplyOperations to send a message a wait for a reply.
AMQP-351 AMQP-379 Stop Container when Fatal Errors

JIRA: https://jira.spring.io/browse/AMQP-351
JIRA: https://jira.spring.io/browse/AMQP-379

Stop the listener container if there is no listener
or if an incorrect POJO method is specified in the
`MessageListenerAdapter`.
Update to SF 4.1; Fix Javadocs
AMQP-426 Refactor MessagingMessageListnerAdapter

JIRA: https://jira.spring.io/browse/AMQP-426

Allow existing applications that are not using SF 4.1 features
to continue to use SF 4.0.

Essentially, push all spring-messaging dependencies down
to `MessagingMessageListenerAdapter`.

NOTE: Also skips conversion if the result is already a
o.s.a.c.Message.
[artifactory-release] Release version 1.4.0.M1
[artifactory-release] Next development version
Update Spring Retry to 1.1.1
AMQP-388 Issue basicCancel from container on stop

JIRA: https://jira.spring.io/browse/AMQP-388

Previously the `SimpleMessageListenerContainer` postponed the real `BlockingQueueConsumer.stop`
with some artificial `quiesce` timeout to block receive thread with `CountDownLatch` until `BlockingQueueConsumer.stop()` will be invoked.

Change `quiesce` timeout to the real `basicCancel` from all `Consumer.stop` cases.
Postpone `SimpleMessageListenerContainer.this.cancellationLock.release(this.consumer);`  in the `AsyncMessageProcessingConsumer` until there are messages
to deliver in the internal queue of the `BlockingQueueConsumer`.