AMQP-451 Batching RabbitTemplate

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

Released in stealth mode for now (no docs, javadocs marked `Experimental`).

This feature is to support XD; we can't incubate in XD because it needs a
change to the listener container.

AMQP-451 Add Perf Test

Move Debatching Code

Move from `SMLC.doReceiveAndExecute()` to `AMLC.executeListener()`.

- Change the cause of the `ListenerExecutionFailedException` on a bad
decode to a `MessageConversionException` so that the default error handler
will cause the message to be rejected - otherwise the badly formed message
will continually be redelivered by default.
- Add a test case to ensure a badly formed message is rejected.
AMQP-446 Reduce Logs for Temporary Declarations

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

Previously, 3 WARN log entries were generated when declaring
a non-durable, auto-delete, exclusive queue. 2 logs were generated
for a non-durable, auto-delete exchange.

Reduce log level to INFO and only emit 1 log per queue/exchange.
AMQP-452: PRC: RemoteInvocResult for exceptions

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

When the `body` of the received `message` in the `AmqpInvokerServiceExporter` isn't an instance of `RemoteInvocation`,
we should wrap an appropriate `IllegalArgumentException` to the `RemoteInvocationResult`.
It allows for for `AmqpClientInterceptor` to unwrap the reply correctly and rethrow to the caller.
Dump Default SF to 4.1.3; amqp-client to 3.4.2
AMQP-451 Override 4 Argument send() (Batching)

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

Spring Integration always invokes the 4 arg method.
AMQP-451: Support Flushing Batch

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

- Add `flush()` to support flushing any partial batch.
- Implement `Lifecycle` and invoke `flush()` when stopped.