significant terms: infrastructure for changing easily the significance h...

...euristic

This commit adds the infrastructure to allow pluging in different
measures for computing the significance of a term.
Significance measures can be provided externally by overriding

- SignificanceHeuristic
- SignificanceHeuristicBuilder
- SignificanceHeuristicParser

and registering Parser and Heuristic at the SignificantTermsHeuristicModule.

As a proof of concept, this commit also adds a second heuristic to the
already existing one (MutualInformation).
if it is an `ElasticsearchLuceneTestCase` you don't need `@ElasticsearchIntegrationTest.SuiteScopeTest`. I also think it should extend `ElasticsearchTestCase` rather than  `ElasticsearchLuceneTestCase` or do you use any lucene specific parts? Can we also call this test not `..UnitTest`  maybe `SignificanceHeuristicTest`