Implement OrderedSet.dedup
This is an iterator combinator that removes duplicate elements while preserving ordering.
Because it is implemented as a generator, it does not need to wait for the entire input before yielding values.
Add a corresponding OrderedSet.dedup_async method for AsyncIterator