Introduce search timeouts

There are two kinds of search timeouts:
1.  Elasticsearch enforced "shard timeouts" which allow it to cleanly timeout
shard actions and return partial results.  Some shard actions return partial
results on timeout (finding matches) while others just cause the search to
try to move ahead without any data from the shard (global term frequency
fetching).
2.  CirrusSearch enforced connection timeouts.  These are just curl timeouts
and will chop the connection after that much time.

We default #1 to 20 seconds and #2 to 40 seconds.  Both are crazy long, twice
as long as the longest requests we're seeing.  We suspect we'll only get
timeouts when something has gone wrong like if a node gets stuck in infinite
GC.

Bug: 62079
Change-Id: Ib1bc2ee95ad0d34dd3b29e356c50b49f0dfdfab2
Merge "Introduce search timeouts"