Add a "peekable" iterator adaptor, with a peek() method that returns the next element.

Peekable changes by @SimonSapin and original PR is #8396