De-lint isArguments().

jshint really didn't like the original version of isArguments, and there
was a call to `toString` that should have been `_toString`.
Support using `arguments` as an iterable.

We can't add an @@iterator field to the prototype of `arguments`, so we
need to special case it in ES.GetIterator and ES.IsIterable instead.
Ensure that Promise.all() works on array-like objects as well as arrays.
Fix Promise.prototype.then to conform to spec.

I assumed there was a think-o in the spec, but the behavior was apparently
intentional.  See https://bugs.ecmascript.org/show_bug.cgi?id=2513
Rename Promise.cast to Promise.resolve; remove old Promise.resolve.

As resolved in Jan 30, 2014 ES6 meeting:
https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-01/jan-30.md#conclusionresolution-3
Merge pull request #215 from cscott/promise-improvements

Promise improvements