Split request logs out from debug logs

Also lots of refactoring to make that "clean".

Cirrus will have four logs:
CirrusSearchRequests: all requests one line per request logged when request
finished
CirrusSearchSlowRequests: all requests for which the elasticsearch request
takes more than 10 seconds including the username or ip address of the user
on who's behalf we perform the request
CirrusSearch: normal extension debug logging and should be low traffic
CirrusSearchChangeFailed: list of all ids that failed to update or delete

Refactoring:
* Updater and Searcher are now almost entirely non-static.
* Created ElasticsearchIntermediary as a useful base class for Updater and
Searcher.  It aggregates timing and logging at this point.
* Switch back to bulk api for all updates now that it supports setting the
shard timeout.

Requires Ic32000923056106c210943458d11c72649e15569 in Elastica.

Bug: 59789
Change-Id: I48569203298fcdcf5c53b1a28dca445b1025eb2f
Escape more bad syntax

Change-Id: I85002767e52558d1021f2c96e5c9e8414a61aed5
Merge "Escape more bad syntax"
Merge "Split request logs out from debug logs"