Handle bcf_*_vector_end  - DO NOT MERGE YET

1. Modified SharedFieldIterator and IndividualFieldValueIterator to handle bcf_*_vector_end values. This is done by passing the end value of
the pointer in the constructor and modifying the "==" operator of the
iterator. The idea is that 2 iterators x,y are equal iff
 (a) x and y are identical  OR
 (b) (x == end && *y == bcf_*_vector_end) || (y == end && *x == bcf_*_vector_end)
2. Inserted test case fields for variable length vectors
I believe this is the intended behavior, yes, but it appears to be non-standard. As far as I can discover, operator\[\]() for iterators in the standard library returns "The element n positions away from the element currently pointed by the iterator."

Is operator\[\]() for these iterator classes actually explicitly called anywhere in gamgee/foghorn? If not, I would vote that we bring their behavior in line with the standard library.