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.