Make iterators compat with Firefox/Chrome; update ArrayIterator.

ArrayIterator doesn't skip holes in the array anymore, according to the
latest es6 spec.  Fix our implementation.

Verify that an iterator can never be revived after it has returned 'done'.

Use `@@iterator` as a method name on Firefox for compatibility with its
partial implementation.  Add shims to the native iterators behind
`Array.values()` on Chrome (with harmony javascript enabled).  Add
shims to the native `MapIterator` and `SetIterator`, anticipating
that Chrome might eventually implement those as well.

Fixes: #189