Support iterators

This is what I wrote to support testing iterators. I don't know if it's quite what you want in your lib (since it takes things in a bit of a different direction) but I thought I'd send it your way.

The `[subject, return]` approach I used for the iterators is more powerful than what I ended up needing but might be useful for testing the behavior of other mutable data structures. Feel free to just grab that separately if you like it.