Implement vector and multivector iterators with boost::iterator_facade

This should make the iterators to really comply with the
std::random_access_iterator_tag. Also should solve issue #90.
Merge pull request #91 from ddemidov/iterator_facade

Implement vector and multivector iterators with boost::iterator_facade