Based a Genotype class on VariantFieldValue

With a couple GT specific operators, including separating out the alleles.

Heavily based off htslib and comment stream in #77.
we opted for not checking boundaries here for now, but we can add boundary checks if we want. These functions should not be used by non-diploid records.