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.
Sorry, I meant that instead of relying on implicit generation when you want a default implementation, you should explicitly declare that you want the default. Eg.,

SamTag(const SamTag& other) = default;
SamTag& operator=(const SamTag& other) = default;
~SamTag() = default;

But as I pointed out in my second comment, you don't actually want the defaults for the copy constructor/assignment operator.