Introduced a Opertaion enum that is passed to each call of
WeightFunction#weight to allow dedicated weight calculations per operation. In certain
circumstance it is more efficient / required to ignore certain factors in the weight
calculation to prevent for instance relocations if they are solely triggered by tie-breakers.
In particular the primary balance property should not be taken into account if the delta for
early termination is calculated since otherwise a relocation could be triggered solely by the
fact that two nodes have different amount of primaries allocated to them.

Closes #2984
Improve stability of SimpleDataNodesTests

Make sure that we are waiting for the new state to be propagated to the node where we are executing the followup query that depends on this state.
Support SpanMultiTerm, closes #2610, #2400

This adds support for lucene span multi term queries. This lucene query
allows users to form complicated queries such as wildcards or prefix
queries embedded within span queries.
Refactoring SpanMultiTermQuery support

* Added license headers where needed
* Refactored SpanMultiTermQueryParser
* Refactored tests to adhere to other tests
Fixed issue where 'fast' should filter can make documents that didn't match the must or must_not clause a match again.
Relates to #2979
A neater approach of for processing should clauses before must or must_not clauses.