AMQP-72: Add AmqpTemplate#receiveAndReply Methods

JIRA: https://jira.springsource.org/browse/AMQP-72

AMQP-72: PR Comments and others

* rename all methods to `receiveAndReply`
* Return `boolean` flag from `receiveAndReply`: was message received or not
* Add methods with `ReplyToAddressCallback`
* JavaDocs & Reference Manual

AMQP-72: wrap receiveAndReply with doInRabbit

* Add transactional tests

AMQP-72: Fix doReceiveAndReply channel.txCommit()

AMQP-72: Add correlationId to replyMessage

AMQP-72: Use `correlationKey` for receiveAndReply

AMQP-72: Correlation and Docs Polishing

Add `catch (ClassCastException e)` for `callback.handle()`

Polishing

Add a test using a String in a non-standard correlationKey.
AMQP-72 Fix Race Condition in New Test

CorrelationKey was changed after senders launched.
AMQP-77 Support Multiple Connections with CCF

CachingConnectionFactory now supports caching either Channels,
or Connections (default channels).

When channels are cached, a single connection is used.

When connections are cached, a connection is used for each channel.

RabbitAdmin auto declarations are not supported when caching
connections.

JIRA: https://jira.springsource.org/browse/AMQP-77

TODO: Parser (exclusive attrs)
TODO: Tests for listener events, including the Admin WARN log
AMQP-77 Polishing

Clean up close notifications; add tests for close notifications.

Enforce attribute mutual exclusivity.
AMQP-77 Test Closed Connect When Creating Channel

Add an additional test to cover the case where the connection
is closed between creating it, and creating its channel.

Detected a bug where the target connection in the proxy (which
an application already has a reference to) was not updated.

Update the proxy target connection.