New genotype and somaticgenotype to store more intermediate statistics

- Added new CalledGenotype and CalledSomaticGenotype (and Kryo serializers) to save more intermediate variant calling information used for filtering

This also makes a distinctions between germline and somatic calls to the filters can be applied appropriately.  Part of breaking down #147 and is dependent on #162 
nit: alignment here was hard for me to grok until I opened it in intellij. I would suggest a return after the `computeGenotypeLikelihoods` close-parend, i.e.:

    val genotypeLikelihoods = pileup.elements.map(el =>
      computeGenotypeLikelihoods(el, possibleGenotypes, includeAlignmentLikelihood)
    ).transpose.map(l => l.product / math.pow(2, l.length))