Channel not disposed if WaitForConfirmsOrDie throws an exception.

I am now "disposing" of the channel in a `finally` block.

Still not sure if we need:
```c#
catch (AlreadyClosedException ex)
                    {
                        if (ex.ShutdownReason != null && ex.ShutdownReason.ReplyCode == 404)
                        {
                            var msg = ex.ShutdownReason.ReplyText;
                            var matches = Regex.Matches(msg, @"'([^' ]*)'");
                            var exchangeName = matches.Count > 0 && matches[0].Groups.Count > 1 ? Address.Parse(matches[0].Groups[1].Value) : null;
                            throw new QueueNotFoundException(exchangeName, "Exchange for the recipient does not exist", ex);
                        }

                        throw;
                    }
```
@andreasohlund what is this for?

## Regarding the use of `Abort()`
After decompiling it looks like Abort is a safest method to call instead of Close/Dispose.
Close/Dispose throws exceptions if the channel is already closed!