Merge pull request #207 from cscott/minor-fixes

Minor fixes, found by jshint.
Fixed syntactic errors (final is a reserved word, no trailing ",") reported by closure compiler.
Merge pull request #211 from kvantetore/master

Fixed syntax errors reported by closure compiler
Merge pull request #209 from cscott/promises

Add Promise implementation based on es6 spec.
Add ES.TypeIsObject, ES.ToObject, and ES.IsCallable helpers.

In the process found a little bug in the String.raw test suite; String.raw
should throw a TypeError if the `callSite` object passed does not have an
Object value for its `raw` field. (Checked against Jan 20, 2014 spec.)

Fixes #208.
String.raw should have length === 1, according to the spec.
Add ES.IsIterable, ES.GetIterator, and ES.IteratorNext helpers.

The definition of IsIterable is actually missing from the current
draft of the spec (https://bugs.ecmascript.org/show_bug.cgi?id=2486)
but we can make a reasonable guess.
Add Number.isInteger; rename ES.toInteger helper to ES.ToInteger.

Also trim the Number.isSafeInteger() test suite a bit to reduce duplicate
test cases.
Add ES.ToLength helper.

The ES6 spec added a ToLength helper in the August 23, 2013 draft (rev 17).
This is used to eliminate the 2^32 length limit for array-like
objects.  Audit places in the ES6 spec where ToLength is used and
ensure we do the same in es6-shim.  Some additional minor
spec-compliance fixups were made in the process.
Fix Array#find and Array#findIndex on sparse arrays.

The Array#find and Array#findIndex methods should skip elements which are
not present in the array-like object, but not terminate the search.
Add jshint to `npm test` to keep code clean.

Added two jshint annotations to allow `== null` in the places where we
explicitly want to test against null and undefined.
Make Map/Set subclassable; support `iterable` argument to constructor.

Use the same technique added for `Promise` to kludge in support for
ES6-style construction and subclassing, factoring out some helper
methods in the process.  Add support for the `iterable` argument to
Map and Set.
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.