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).
I am not sure if we should name something `DefaultXYZ` IMO we should give it a name what it is ie. it's scientific name if there is one. And have a `public static final SignificanceHeuristic DEFAULT = XYZSignificanceHeuristic.INSTANCE;`