AMQP-350 1.3 Schema

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

Create 1.3 schema; revert 1.2 schema to v1.2.0.RELEASE.
AMQP-347: Restore Logs for Non-Normal Shutdown

Eliminate `throw e` so the container can restart if possible.
AMQP-346 Polish Docs - Message Rejection

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

Prior to RabbitMQ 2.7.0, rejected messages went to the back
of the queue; they now go to the front of the queue.

Update the reference document to reflect that.

Fix property name for `defaultRequeueRejected`.
AMQP-347-2: Remove aborted=true on ShutdownSignal

JIRA: https://jira.springsource.org/browse/AMQP-347
AMQP-347 Fix Connection Shutdown Test

Container needs to be stopped so it doesn't steal responses
for other tests (test.queue).
AMQP-230: DirectExchange: Allow Omit `key` Attr

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

Previously, the `key` attribute for a `direct-exchange` `binding` could be omitted,
but that meant that the binding used an empty `routingKey`.
With this change an empty `routingKey` requires `key=""`.
Omitting the `key` means that the binding will use the name of the provided `Queue` or `Exchange`
for the routing key.

AMQP-230: Move routingKey logic to DEParser

AMQP-230: routingKey resolution using SpEL

AMQP-230 Polishing

Author tag; what's new.
AMQP-355 Fix Race Condition in Tests

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

The container might stop before the final call to ErrorHandler.

Change the mock to count down a latch, and wait for the latch
before stopping the container - instead of simply verifying
handleError was called the expected number of times.

Move the other Assert inside the try block so the shutdown
will always happen.

Remove the unnecessary mock.reset().
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.

AMQP-77 Polishing

Iterate over all idle connections, looking for an open one,
before creating a new connection.

Only invoke reset() from connection.destroy when the cache mode
is CHANNEL.

AMQP-77 Docs and Another Test

Reference documentation

Add a test to ensure RabbitAdmin does not declare when the cache
mode is CONNECTION.
AMQP-353: Remove Deprecate API

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

* `FederatedExchange` and its tests
* `immediate` flag usage
* `StatefulRetryOperationsInterceptorFactoryBean.setMessageKeyGeneretor`
* `@Deprecate` `PublisherCallbackChannelImpl.basicRecoverAsync`
* `@Deprecate` `MessageListenerAdapter.setImmediatePublish`
*  Fix tests to use `channel.basicPublish` without `immediate`