Likelihood refactor

Moves the likelihood calculation code from Pileup and Genotype into
a new singleton object.

This refactoring enables a more efficient implementation that resuses
computation between genotypes that share alleles. On my local tests, the
likelihood calculation is about 40% faster than the previous implementation.
Overall that gives about a 10% performance boost to variant calling.

 * Create a new package and singleton object Likelihood for likelihood calculation code.
 * Remove likelihood calculation code from Pileup and Genotype
 * Port tests from PileupLikelihoodSuite and GenotypeSuite into a new test suite LikelihoodSuite
 * Port variant callers to use new likelihood calculation function.
 * Remove == and equals() methods from Allele class.

Closes #228.
nitty, but these calls feel less clear to me post-change
Before:
```
    pileup.computeLikelihoods(includeAlignmentLikelihood = true)
    pileup.computeLikelihoods(includeAlignmentLikelihood = false)
```
After:
```
   Likelihood.likelihoodsOfAllPossibleGenotypesFromPileup(pileup, Likelihood.probabilityCorrectIncludingAlignment)
   Likelihood.likelihoodsOfAllPossibleGenotypesFromPileup(pileup, Likelihood.probabilityCorrectIgnoringAlignment)
```

`Likelihood.likelihood*` is boilerplatey... maybe if we imported these methods directly from Likelihood it would be better?
```
   likelihoodsOfAllPossibleGenotypesFromPileup(pileup, probabilityCorrectIncludingAlignment)
   likelihoodsOfAllPossibleGenotypesFromPileup(pileup, probabilityCorrectIgnoringAlignment)    
```