Removed ambiguous behavior from getIterator
Previously iterator returned Traversable for map and collection.
Phpstorm and Phpstan can resolve it correctly though IDE will still think that type is either the declared one or something else.
Since php is dumb and handles differently array<type>
and Traversable<type>
we have to declare that Traversable always has an array key as Traversable<array-key, type>