Record all channels created in the course of connecting

Exchanges don't always end up being recorded in advertisements; worse,
queues don't even get recorded. So, take a different tack: every time
a queue or exchange is created, record it in one place, and close all
of them in `#end`. Simpler, and doesn't miss out any channels (so long
as _register() is wrapped around every call to connection.exchange and
connection.queue).