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.
what is this check for? When is this special case ever happen? Is this the missing allele code? I think we should be using the standard value `bcf_int32_missing` instead of -1 (even if that value is -1, I don't know what it is off the top of my head)