Another try at allowing optional iteration

I had pitched this previously, but the discussion was bogged down by
purists who claimed that thinking of optional as a sequence of 0 or 1 elements was somehow more useful, and we should aim for that.