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`).  This also makes
`Array.from('\ud800\udc00')` compliant, since the spec says this should
return a single-element array.

Closes #182