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.
Merge pull request #212 from cscott/gh-208

Refactor to add ES.TypeIsObject, ES.IsObject, ES.IsCallable, ES.IsIterable, ES.GetIterator, ES.IteratorNext, ES.ToInteger, and ES.ToLength helpers, and ensure that we use these in the right places (implementation audited versus the Jan 20, 2014 spec).  Throw in a fix for the .length property of the String.raw function while we're at it.

Closes #208, #212.