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.
Also, it looks like the reason why there are no deep copies in the VariantFieldValue class you used as a model is because the copy constructor and assignment operator are explicitly deleted:

VariantFieldValue(const VariantFieldValue& other) = delete
VariantFieldValue& operator=(const VariantFieldValue& other) = delete;

If you would like to do the same (make Genotype objects non-copyable, but moveable) I would be satisfied, and it would save you some work figuring out how to recompute those _ptr members during a copy :)