Added tests to verify everything is working just fine.

There's more work to be done in terms of simplification and clarity.

But much clearer specification and more obvious how to use this thing.

Nice thing is it's mostly non-blocking, ie. call next iteration whenever you want.

That is the reason for the iterator stuff being at the very forefront - it's up to the user to
decide when to call my code.