If the `notifyClose` channel is closed we should exit early

During channel (and connection) shutdown, the AMQP library we're using
here closes the various notification channels we provide it on
instantiation.

If we don't check whether or not the notification channel for
`notifyClose` is open then we won't ever know whether a higher up
method closes it.

By adding a condition for this we can know if a process higher up has
closed the channel.

Also wrapped the select in a `for` loop so that it is continually
evaluated rather than only operating on a single read from the
`notifyClose` channel.