Don’t evaluate the first element twice in sequential()

`sequential()` would potentially evaluate the first element of the iterable twice: once when testing the emptiness, and once again when actually collecting the elements. Reuse it instead.

(Tested by the test fixed in 4dd19f1.)