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.)
There's plenty you can do besides asserting that it's None. For example, you could turn it into an error value that's passed up the stack, or you could do what rustc does and construct a failure that includes a useful error message (e.g. the `span_bug()` handler).

Or you could deliberately ignore it, because you've constructed your code such that if there *is* a value it's one you don't care about.

But it doesn't really matter what you do with it, it only matters that you *can* do something with it. Failure with no mechanism to check whether it will fail ahead of time makes an API completely useless in a lot of scenarios (because you can't risk calling it, because you can't ensure it won't fail).