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.