Add a put_back() method to the Peekable iterator.

Sometimes, rather than peek()’ing and then potentialy calling next() to go past the item you’ve already handled, it’s more convenient to call next() first and potentially put the item "back" in the iterator, to be consumed by another part of the code.

As shown in tests, the parameter need not actually come from the iterator, but it usually is in more typical usage.

(I assumed this addition was small enough to not need an RFC.)
I don’t understand this seemingly dogmatic opposition to runtime failure, it’s really the right thing to do here. In every use case for this method I can think of, I don’t know what I would do with the proposed return value except assert that’s it’s None. And just ignoring the return value is likely a bug.