use class for array iterator on c#

`Array.iterator()` is used a lot even in core C# stuff, like casting types and reflection, so for performance and memory consumption reasons it's better be a proper class, not a DynamicObject.

This branch adds the `ArrayIterator` class to `cs/_std/Array.hx` and makes use of it. Also it makes `Typer.create` a bit smarter about loading `Array` to `ctx.t.array`, so it supports multiple types in the module.

cc @waneck