Add isdone(itr::ReadEachIterator, state...) (#39662)
This prevents `isempty` and friends from advancing the iterator when
they shouldn't.
Note: `collect(readeach(io, T))` can throw an exception if `io` isn't a
multiple of the right size. `isempty` will still return `false`, even if
the next call to `iterate` will throw an exception.
Similar to: #27412