Don't assign @connection until recovery has fully completed

Currently, `@connection` is assigned immediately, before channel/exchange/queue recovery has happened. This can allow client applications to attempt to continue using the channel before recovery has fully completed, which may include usage of non-open channels.

This PR simply defers the @connection assignment until recovery has fully completed, which ensures that any calls to `Session#open?` and the like will fail until the system is in fact usable again.