Minimum should match

* A few refactorings to allow more flexible options to be passed down to the search query builder.
* Additional features in the bin/search script which allowed comparison of different minimum_should_match settings
* Activation of default minimum_should_match setting across all indexes according to the table below. The table was devised by myself and @tarastockford using the comparison feature of bin/search with various example queries of different lengths (3, 4, 5, 7, 9 words) and inspecting the consequences on search results. We think that this table should give a good improvement to search performance.
* addition of a promoted_results facility, which allows jobsearch to appear at the top of results for any search containing the term "job" or "jobs"

```
Number of | Minimum
optional  | should
clauses   | match
----------+---------
1         | 1
2         | 2
3         | 2
4         | 3
5         | 3
6         | 3
7         | 3
8+        | 50%
```