Distributed vector cleanup

This cleans up the implementation of distributed vector. Iteration is now much more performant.
Why is this a shared_ptr? Does the iterator own the data?