Add GeneratingIterable

I'm not convinced on this name, and there's a few variations on how this could be done, but this has been a useful utility for me already.