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).
The `updateScore()` was removed from the Bucket constructor in the first commit. Therefore, when Buckets where crated, for example when streaming, the score was not actually updated and in the response the score was 0.

However, I took a closer look now and found that toXContentResponse is actually the wrong place to call `updateScore()` - instead it should be called after streaming buckets, else results can still not be up to date when using the java API. I did not see this before, because `assertSearchResponse()` triggers a call to `toXContent()`.

I added a test without `assertSearchResponse()` and the change in commit "Compute score after streaming..."