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.

@sebsjoberg, could you please check if this works on Mac OS X?