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 assignment operator:

Genotype& Genotype::operator=(const Genotype& other) {
  if ( &other == this )  
    return *this;

  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
  return *this;
}