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 sure what you mean here. Can you elaborate?

line 113 literally means : 
```c++
for (s : as) 
 concat += s[0];
```

so the array indexing (operator[]) is being used inside the for_each, but it is also exercised in 109-111. 

The individual values of each sample are tested in 109-111. This line is testing the iterator implementation as well as it's functionality inside a functional style call like for_each. This assures me that it will work with other std library functional style functions.