Raise errors when indexing fails

Currently we ignore some classes of indexing failure. This change inspects the response body and looks for any failures and raises an error. Things like Timeouts, Elasticsearch being unavailable and so on are already be reported.

In development, this change would mean you get a semantic 500 error for failed indexing requests, rather than 200.
In production-like environments, because indexing is done in the background, the error will be raised in the worker and then retried by Sidekiq's retry mechanism as normal.