Clean up auto-deleted queues from recovery cache when the last (known) consumer is cancelled

This addresses a memory leak in the most common case: declare an auto-deleted queue,
add a consumer, do some work, cancel.

Of course, our cache is oblivious to other consumers that may be used, including
those on other connections, but we only invalidate our own connection-scoped cache,
not delete the queue.
Invalidate local exchange cache entries for auto-delete exchanges on queueUnbind
Invalidate recorded auto-delete exchanges after queue.delete and exchange.delete

 When the destination end of a binding is deleted,
 so is the binding.
Refactor
merge bug26364 into default