Improve unfold and iterate, and docs.

Unfold allows promises-for-tuples for asynchronous unfolding, and
allows tuple.done to control ending the stream early.  Similarly
iterate allows async iteration of future values by returning a
promise.

Reorganized unfold and iterate into their own modules, improved their
unit tests and docs.