Update ArrayIterator to match es6 spec; support iterators in Array.from().

All the iterator functions in the es6 spec now return an object with `value` and `done` fields.  Update the `ArrayIterator` implementation to match the latest spec.

Add an implementation of `StringIterator`, based on the es6 spec.

Make `Array.from()` support our shimmed iterator implementations (including `Map`, `Set`, `String`, and `Array`).

Closes #182