Added reserve to NVVectorTest
Added canaries to NVManager
Clarified NVAttributeVector's error messages
Fixed NVVector resize overwriting heap when resizing to smaller vector

If an NVVector was resized, it was checked if size() < count. If this was the case, more space was reserved (i.e., a new vector was allocated and the values were copied):

    memcpy(new_vi + 1, vi + 1, vi->allocated);

This was fine as long as vi->allocated < new_vi->allocated, which is true if we actually increased the size of the vector. However, what we checked was size() < count. It could happen that size() < capacity() and count < capacity() - assuming sizeof(T) == 1:

    size() == 4;
    capacity() == 10;
    count == 6

In this example, reserve does the following:

    NVVectorInfo *new_vi = _allocateVectorSpace(6);
    memcpy(new_vi + 1, vi + 1, 10);

Obviously, this corrupts the memory. The fix for this is for reserve() to return without doing something if capacity() >= count.