Log when the AMQP channel's `notifyClose` channel is closed

We didn't have anything to check whether the `notifyClose` channel was
open. We were only doing something when an `amqp.Error` message was
added to the channel.

By adding this, we'll be able to track when/why a channel might be
closed.
[#76062972] Reduce reliance on `time.Sleep` for tests

Where possible we should use the asynchronous constructs provided by
our testing utilities (ginkgo and gomega).

The majority of tests have been converted to use these new matchers.
The only test that hasn't been converted is one that relies on
timings (TCP reconnection in Redis) where an internal goroutine's
behaviour (read: delay) is time-based.
Merge pull request #46 from alphagov/reduce-reliance-on-time.Sleep-in-tests

[#76062972] Reduce reliance on `time.Sleep` for tests
Merge pull request #48 from alphagov/log-when-the-channel-is-closed

Log when the AMQP channel's `notifyClose` channel is closed
Reorder workflow functions to be in the order that they run

Make it a little easier for people who are looking to follow the
workflow we have in our `main()` function by placing the workflow
functions in the other that we run them.
Explicitly log any errors we have trying to acknowledge messages

`Delivery` objects return an error if they can't be acknowledged. Log
when we receive an error so that we know where these errors are
appearing.
[#76261684] Increase queue read channel buffer based on number of crawlers

Increase the buffer we hold for `Delivery` items to equal the number
of goroutines we're running for crawling.
Merge pull request #50 from alphagov/increase-reader-channel-buffer-to-equal-number-of-crawler-threads

[#76261684] Log acknowledgement errors and increase reader channel buffer
Add *CrawlerMessageItem.IsBlacklisted() function

Add a function `IsBlacklisted()` on the `CrawlerMessageItem` interface
that returns true if the item's URL is blacklisted.

We'll be using this in the next commit to check for blacklisted URLs
when reading messages from a RabbitMQ queue.
Check URL is blacklisted when reading from queue

Check if a URL is blacklisted as we read it from the RabbitMQ queue to
prevent us from crawling blacklisted URLs.

Previously we would only check URLs that were extracted from a crawled
HTML document.

Note that in the tests, we inspect the RabbitMQ queue to verify that the
message has been rejected. This is necessary because the channel
returned by `ReadFromQueue()` will always have a zero length (since the
message is rejected), so we can't perform any assertions on that
channel.