Add result promoter

this will be responsible for handling promoted results
such as universal job search
Split promoted result into separate file
Pass promoted result settings to index

The promoted results settings will be configured in the
elasticsearch_schema.yml file and passed down from the Server to
IndexGroup to Index.

This will allow them to be used at both search and indexing time.
Configure jobsearch to be a promoted item

We know that a lot of people search for "jobs in birmingham" for
example. With a minimum_should_match setting this would not find the
jobsearch. We want to ensure that jobsearch shows up for any such query,
so we make it a promoted item.
Allow decorating document hashes with promoted_for

This is used at indexing time to set the promoted_for field
Indexing a promoted document should set promoted_for

A promoted document, identified by its link, will have the
'promoted_for' field set. This will then allow it to match against the
promotional clause in the search query and be boosted.
Add search clause to boost promoted items

Promoted items will have the promoted_for field set to a list of
keywords. This is an analyzed field so promotional terms will be stemmed
etc.

I've changed the search query to add an outer bool query with two should
clauses:
  i) the previous bool query containing the main search part for the
phrase (with minimum_should_match) and should clauses for boosting
  ii) a clause which matches only against the promoted_for field

Any documents matching promoted_for will immediately be boosted to the
top of the results. All other aspects of the search query remain
unchanged.