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>>

fixes #78
> array indexing (operator[]) is being used inside the for_each, but it is also exercised in 109-111

Ok, I guess I get it. The iterator on 113 is the primary functionality being tested, not something "magical" in the auxiliary concatenated string. If you had a variable with a vector of literal strings, Lines 112-114 could be replaced by a single `BOOST_CHECK_EQUAL_COLLECTIONS`, but this version works fine too. :thumbsup: