The Searcher class still has some code that is hard to re-use. We should refactor it bit to clean the states in the SearchContext, goal is to :
- move to a central place the building of the rescore queries
- limit state changes in the SearchContext to limit dirty sates
- externalize most of elastic query building code out of the searcher class
- externalize the search_request building code so it can be reused