Warmer (search) to support query cache

allow for search based warmer to support query cache flag on the search request, and use the index level query caching flag if set.
 Note, this change required changing the logic in warmer, to pass the actual searcher that will be used on for the actual search requests to the warmers. This changes the previous behavior of only using readers that were not warmed during merges, or already around. This change simplifies the warmer code significantly, and the overhead will be very small for existing warmed readers (like after a merge), yet allow us to implement warmers like the query cache (and actually have a cleaner contract, "same as search").
This looks like a complicated way to say `if (canCache != top)`?