Added arrow operator to ValueIterator and ValueConstIterator

When using ValueIterator or ValueConstIterator, it is necessary to dereference and use the dot operator to access the underlying value. [STL Iterators](http://www.cplusplus.com/reference/iterator/), however, also override the arrow operator to provide shorthand for this.

For example, `(*it).a` is equivalent to `it->a`.

This pull request overrides the arrow operator to provide this functionality.