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).
can we maybe make this immutable ie. take the boolean in the constructor. OR you have two static instance and always return the static one ie:

```
if (in.readBoolean()) {
  return MutalInfromation.INCLUDE_NEGATIVES;
}
return MutalInfromation.EXCLUDE_NEGATIVES;
```
and make the Ctor private?