AMQP-273: mandatoryExpression for RabbitTemplate

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

Polishing
AMQP-425 Add @RabbitListener Documentation

Also RabbitMessagingTemplate reference.

Doc Polishing.
AMQP-422 PublisherCallbackChannel: postpone close

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

Add `stopSemaphore` and `closeTimeout` option to the `PublisherCallbackChannelImpl`
to postpone physical `close` until timeout or handlong for all pending confirms

Decrease `@Repeat` for `RabbitTemplatePerformanceIntegrationTests` for better build performance
AMQP-422: Rework `stop` logic to the scheduling
AMQP-422: use `waitForConfirmsOrDie` from CCF

* Revert all changes to the `PublisherCallbackChannelImpl` class (leave just code style polishing)
* Add to the `CachingConnectionFactory.CachedChannelInvocationHandler.physicalClose()` to postpone
`Channel.close()` `if(publisherConfirms)` and use `waitForConfirmsOrDie` in that separate `Thread`
* Add a couple of test to demonstrate new logic
* in case of just `publisherReturns` `Channel` is closed normally as it is now
AMQP-422: Add `active` check to the async close logic
AMQP-422: NPE fix and `catch` logic
AMQP-422: Accept stop schedule for `publisherReturns` too

Change wait timeout to 5 seconds