There are quite a few `__iter__` methods in `itertools` that return `self` at runtime. They should do so in the stubs as well.
Co-authored-by: Sebastian Rittau <srittau@rittau.biz>
start should be optional: https://docs.python.org/3.8/library/itertools.html#itertools.count
Directly changing the second overload to mark start as optional
generated a mypy error about overlapping overloads, but adding a third
overload seems to work.
I also noticed that `_NStep` was defined as a TypeVar when I think it
makes more sense for it to be a Union, so I went ahead and changed that
as well.