BUG: Fix fusing bug in cartesian_product's fold
BUG: Fix fusing bug in cartesian_product's fold

cartesian_product's .fold() could call .next() on its first subiterator
even if it had already returned None once. This was caught by the
quickcheck test, just not reliably so.

rust-itertools/itertools,imp/rust-itertools