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.
Copy constructor should be something like this:

Genotype::Genotype(const Genotype& other) :
  m_body {utils::make_shared_variant(utils::variant_deep_copy(other.m_body.get()))}
  m_format_ptr { // calculate correct value for this based on the new m_body copy you just made }
  m_data_ptr { // calculate correct value for this based on the new m_body copy you just made }
{}