Disable noWait when deleting queues/exchanges

The use of noWait when deleting queues and exchanges in tests means that we
don't catch any errors (they go to the notifyClose channel which is handled
within QueueConnection) and that their presence can affect the behaviours of
tests in other describe blocks.

This now causes the tests to fail when deleting the exchanges. Which we'll
need to fix before merging this commit:

    Expected
        <*amqp.Error | 0xc2101734e0>: {
            Code: 503,
            Reason: "COMMAND_INVALID - unimplemented method",
            Server: true,
            Recover: false,
        }
    to be nil
Use publisher/producer to delete test exchanges

This fixes the `COMMAND_INVALID - unimplemented method` test failures
introduced by disabling noWait in the previous commit.

They are caused by RabbitMQ refusing to allow an exchange to be deleted if a
channel is still Consume()ing from it. Ideally we'd Cancel() it, but doing
so requires the ConsumerTag which we've allowing the client library to
auto-generate for us - we only have access to it in delivered messages, of
which we might not have any.

So the simplest solution is to use the publisher/producer channel to delete
the exchange. I've added a comment here, because it wouldn't be immediately
obvious why.
Merge pull request #15 from alphagov/amqp_test_delete_state

Ensure that test queues/exchanges are deleted