This property map is used to efficiently store properties for a variable
number of elements. It's somewhere between associative_property_map and
iterator_property_map. The latter
is very fast, but requires that the number of stored elements is known
when creating property map. The former does not have this requirement, but
is slower, and requires stored elements to be comparable.

The vector_property_map uses mapping from key to indices,
and allows to add new elements. It accoplishes this by storing values
in a vector, which is resized on demand.

Note that vector_property_map does not provide reference/pointer
stability for stored values.

This group of methods gives access to begin and end iterators of the
underlying vector.

Rationale: The methods are handy, for example, when it's needed to
specify a single value for all elements in a freshly created property map. The
methods are not called simply "begin" and "end" since
conceptually, vector_property_map is unbounded map, and has no end
iterator. The direct access to the underlying method is not provided, since
it would decrease encapsulation and make future performance tuning dangerous.

Acknolegements: Matthias Troyer suggested adding those functions.

void reserve(unsigned size)

Reserve the space for storing elements with maximum index of 'size'. Unless
element with greater index is accesses, all accesses will be take O(1) time.