More cleanups and fixes.

This is based on pull request #209 (Promises).  That should be merged first.

This PR factors out a bunch of new ES.<foo> helpers to make us comply more closely to the es6 spec (see #208).

It also adds `Number.isInteger` from the spec and fixes bugs in `String.raw`, `Array#find` and `Array#findIndex`.

The last patch in the series makes our code jshint-clean, and adds jshint to `npm test` to keep it that way (as suggested by @ljharb in #207).

Let me know if you'd rather see this as a series of 1-commit-each pull requests.