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.
Thoughts on `for`-comp passes each getting their own line?
```
for {
  (allele, alleleIndex) <- alleles.zipWithIndex
  (element, elementIndex) <- elements.zipWithIndex
} {
  val successProbability = probabilityCorrect(element)
  val probability = if (allele == element.allele) successProbability else 1 - successProbability
  alleleElementProbabilities.set(alleleIndex, elementIndex, probability)
}
```
(just curious)