Variant: add Genotype getters

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.
SamHeader: add n_sequences member function

* add n_sequences member function to allow iteration over the reference sequences
* make const member functions const (they weren't for some reason)
* inline simple member functions
Merge pull request #143 from broadinstitute/mc_sam_header_fixes

SamHeader: add n_sequences member function
Merge pull request #133 from broadinstitute/ks_genotype_field_value

Based a Genotype class on VariantFieldValue
Variant: read api for format field strings

There was a bug with the implementation that wasn't concordant with how
htslib parses the strings in the bcf1_t structure. It now works by
checking for bcf_string_vector_end values to separate the strings, and
skips blocks to find the values for every sample using the fixed length
blocks as defined by bcf_fmt_t->n.

Support for vector of strings per sample is not yet agreed upon in the
VCF/BCF spec, so comma separated strings will be treated as a single
string by htslib and thus by Gamgee.

* string type number of bytes per value is reported by fmt->n (weirdly)
* make format utility functions not inline (too big to inline)
* add tests for variable length strings across samples
* add functional tests for iterators of VariantField<VariantFieldValue<string>>
* add tests for all type conversions in the format field api

fixes #78
Merge pull request #136 from broadinstitute/mc_variant_string_format_field_fix

Variant: read api for format field strings
SamBuilder: add move constructor test

and explicitly default the move constructor
SamBuilder: add constructor test
SamBuilder: make move-assignment default
SamBuilder: add tests to move-assignment
Variant: fix memory leak in generic_string_info_field
SamBuilder: add test for setting empty cigar
SamBuilder: add illegal operator in front of length cigar operator
SamBuilder: more invalid cigars
SamBuilder: add invalid base quality string test
SamBuilder: add explicit initializer_list<uint8_t> set_base_quals test case
Cigar: add copy and move constructor tests
Cigar: add copy assignment test
Cigar: add move assignment test
Cigar: make move constructor and move assignment default
Cigar: add tests for invalid cigar access
Cigar: add test comparing unequal cigars
Cigar: check self assignment in the copy assignment constructor
BaseQual: add copy/move assignment and constructor tests