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
Not 100% sure what the difference is, nor what possible operator overload(?) or something this concat is testing, so maybe this doesn't matter. But if this _only_ testing collections of `string` objects, earlier tests use `const vector< vector<string>> truth_alt` to test multiple different string values instead of concatenating a longer `string`. That allows each line 109-111 to then use `truth_xxx[0]`, etc.

Like I said, perhaps I'm missing some C++ syntax here that's getting invoked, that I don't realize may be used elsewhere by a foghorn developer.