Rename the DocumentQueue to an IndexQueue.

We can make the queue more generic to cover different queue operations,
rather than incur the overhead of different queue classes for each
operation.
Add a worker to delete documents asynchronously.
Pull all Sidekiq worker config into one call.
Add some backtrace information to failed jobs.

Because the failed jobs mail queue is our only source of error reporting, we
should have information on where in the code the exception happened.
Empirically, 12 lines is about what we need to get from RestClient errors out
to the top level of the app, without going out into the Sinatra gem and the
various levels of Rack middleware.
Pull worker functionality out into a base class.
Put all elasticsearch jobs onto the same queue.

We don't really gain anything from having separate queues for each operation,
and we don't have to worry about keeping the list of queues for the worker and
the queues for each job type in sync.
Consolidate Sidekiq options for failed job worker.
Push amendment into the Index class.

It's a nicer way to structure the code anyway, and it'll make it
easier to do amendments asynchronously. Also, should we decide to use
elasticsearch's atomic updates, that'll be easier to do within the
Index class.
Enable queueing for amendment operations.
Deprecate the delete_all command.

We now have a replacement for this in a Rake task; we're deprecating
this now because it's the only remaining synchronous write operation.
Merge pull request #152 from alphagov/asynchronous-all-the-things

Process amendments and deletions through a queue