AMQP-407 Redeclare AMQP Objects if Missing

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

Previously the `SimpleMessageListenerContainer` redeclared AMQP objects for a new `Consumer`, only
if one of `Queues` was `autoDelete`.
Since `Queues` might be removed from the Broker according to the server TTL policy, there is a need to take care of their redeclaration as well.

Fix `BlockingQueueConsumer` to `catch (AlreadyClosedException e)` on the `channel.basicCancel(consumerTag)` operation:
https://build.spring.io/browse/AMQP-NITEALL-373

Tested with `gradlew clean testAll`

AMQP-407: Add `auto-declare` to ListenerContainer

Fix `SimpleMessageListenerContainer` do not start a new `Consumer` when `continuable` but not `isActive(this.consumer)`. It happens when we stop Container, but Consumers have delivery in the internal queue.

Fix some tests to stop Container in the end.

AMQP-407: Fix `ListenFromAutoDeleteQueueTests#testAutoDeclareFalse`

...to stop Container in the end of test method.
It allows to overcome the issues with hanged `MessageListenerContainerLifecycleIntegrationTests`.

However it doesn't help to understand the root of cause: when the Deal Lock is...

AMQP-407: Avoid `Main Loop` from Mock Consumer

Doc Polishing