iterator: Add .cycle() to repeat an iterator
iterator: Let closure-less iterators derive Clone
iterator: Add test for .cycle()
std: Implement Clone for VecIterator and iterators using it

The theory is simple, the immutable iterators simply hold state
variables (indicies or pointers) into frozen containers. We can freely
clone these iterators, just like we can clone borrowed pointers.

VecIterator needs a manual impl to handle the lifetime struct member.
dlist: Implement Clone for immutable iterators