Modified operator == in IndividualFieldValue to use iterators which
take care of bcf_*_vector_end values implicitly
A more serious bug in the previous implementation of the == operator was
in the way string fields were handled. Points to remember for string
fields:
1. The size() function returns the number of characters allocated for the string.
2. The variable m_num_bytes also stores the number of characters
allocated for the string (same as size())
3. When operator[i] is called for string fields, the address that is
accessed is m_format_ptr->p + i*m_num_bytes (not m_format_ptr->p + i).
The address accessed is outside the original allocated memory.

Moral of the story: use iterators always, or remember the intricacies of
string v/s other types of fields.

Similar fix for SharedField also