Add timeouts to updates and better log failures

$wgCirrusSearchShardTimeout is Elasticsearch's primary shard timeout -
how log it will wait if a shard's primary index is not online.  Cirrus
defaults to 1ms assuming that if a shard isn't online we don't have time
to wait for it to get that way.  It'll log an error instead.  If not set
Elasticsearch defaults to 1 minute.

$wgCirrusSearchClientSideUpdateTimeout is the timeout set on the CURL
requests performing updates to Elasticsearch.  It defaults to 5 seconds.

Neither timeout affects maintenance scripts or searches.  Maintenance
scripts will wait the full minute.  Searches never wait at all and just
return results from the shards that are online.

This also addes a new identifier for wfDebugLog, "CirrusSearchChangeFailed"
to which ids of pages that failed to be deleted or indexed are recorded.

Bug: 57215
Change-Id: I01501673d86c31a3b2c3800c1dc8c263c0b8bebf
Merge "Add timeouts to updates and better log failures"