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
in the generic sense of the == comparator, this would return true for something that is mid-iteration, if you inverted the values in the operation. For example if my values are {A,B,C} and I have an iterator pointing at B and compare that to the end like this: 
```c++
if (it == indiv_field.end())  // works 
if (indiv_field.end() == it) // it will always be true -- fail
```

This works for the for-each loop which should account for 99% of the time, but I think we can make this logic a bit more robust and get it to work every time.