AMQP-420 Fix Memory Leak with Publisher Confirms

The wrong key is being used for `RabbitTemplate.pendingConfirms`. The rabbit template
stores the pending confirms map under the `ChannelProxy` whereas the
removal uses the actual `PublisherCallbackChannel` so the map
entry is not removed.

Use the correct key to store the pending callback map so that it
is removed from the template when closed.

Change a test case to use the `CachingConnectionFactory` instead of
a mock and veriy the map is cleared.

**Add docs explaining that Publisher Confirms and Returns only works
with cached channels - ensure the cache size is sufficiently large.
Can't we make it somehow friendlier to avoid cases when cache size is already exhausted, but we want to receive `Confirms` anyway? I mean to add some flexibility according to the size of waiting for Confirms or use `pool` pattern in case of `if (this.publisherConfirms || this.publisherReturns)`, instead of creating a new non-cached channel instance.