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.)
You could indeed, and I considered suggesting that before, but personally, I don't think it's a good fit. Not only do I not particularly consider the case of replacing an existing value to necessarily be an error, but an API that returns an `Err()` value generally means it was not successful, but in this instance it would in fact be successful and the `Err()` would instead be holding the previous value.

Perhaps this could be resolved merely by changing the name to something containing the word "replace", e.g. `fn replace_back()`. The word "replace" already suggests that it's swapping one value for another, and we already have precedence for the word being used to return an `Option` indicating that there may not have been a previous value (namely, in `local_data`).