Add Sidekiq dependency for job queueing.
Index documents asynchronously.

This lets Rummager handle the case where the search engine is not
available or a request times out, rather than falling over with an
error and leaving the requesting application to handle the failure.

This is a first pass at getting something that works, so it's not very
pretty and doesn't have good test coverage.

For the purposes of testing, for now, we're disabling job queueing and
making all jobs happen synchronously. This is in lieu of making the
tests aware of how the queues work.
Base the queue's namespace on the environment.

More than anything else, this is to avoid any overspill between
development and testing. The tests should all be unable to write to
the queue, but just in case, this shields us from accidentally trying
to post test data and getting IndexNotFound errors.

Hat tip to @jamiecobbett for the idea.
Put queueing behind a feature flag.

Enabling this in development by default would break people's machines
unless they knew to fire up a queue worker. We can hide this behind an
environment variable and overwrite the initialiser on deployment.
Respond with a 202 response when queueing enabled.

This code more accurately reflects the fact that the request has been
accepted for processing, but hasn't yet succeeded (and might fail).
Document asynchronous mode in README.
Test the functionality of the DocumentQueue.
Make the indexing worker retry fewer times.

The default number of retries is 25, with exponential backoff, which
will cause a request to be retried for about three weeks after it's
initially submitted. By this time, there's a good chance the document
will be out of date anyway. Five retries over about 7 minutes seems like
a far more sensible default.

See <https://github.com/mperham/sidekiq/wiki/Error-Handling>.
Test the functionality of the indexing worker.
Explicitly disable queueing in functional test.

This was previously relying on the environment not having the ENABLE_QUEUE
variable set, rather than making sure queueing was disabled.
Disable queue behaviour in integration tests.

This doesn't actually break the functionality in the tests, but most of the
HTTP-level tests are checking the response's `#ok?` method, which asserts a
200 response code, rather than the 202 we return when running asynchronously.
Merge pull request #124 from alphagov/queued_add

Index documents via a Redis-backed queue