AMQP-431: Add `RabbitTemplate.recoveryCallback`

JIRA: https://jira.spring.io/browse/AMQP-431
I think we need to convey to the recovery callback the method name that was invoked by the caller, so it can decide what to return. Something like...

    try {
        context.setAttribute("methodName", threadLocalMethodName.get());
        return RabbitTemplate.this.doExecute(action, connectionFactory);
    }
    finally {
        threadLocalMethodName.remove();
    }

...or, of course, propagate a `methodName` argument into execute.