Phrase Suggester: Add option to filter out phrase suggestions


The newly added filter option will let the user provide a template query which will be executed for every
phrase suggestions generated to ensure that the suggestion matches at least one document for the query.
The filter query is only executed on the local node for now. When the new filter option is used, the
size of the suggestion is restricted to 20.

Closes #3482
I renamed it to `Preference` and changed it to an enum, but it seems the way I have it currently, there is more boiler plate added rather then being a clean solution. Examples: 
````java
Preference.ONLY_LOCAL.type()
````
is needed for the string representation of '_local_only'. 

The values() business feels wrong on the enum, some options have to have values others don't and its not obvious wants happening.

I got rid of all the changes to the unrelated files for `Preference`, but still left the implementation for the feedback and how to move forward with it.