Miscellaneous cleanup.

We don't need to check the type of the exception -- all InterpreterExceptions
are passed via errCont, instead of actually being thrown.
Switch to esprima's harmony branch.

This paves the way for supporting stuff like `yield`.

Removed for-in initializer test because it is ES6-incompatible.

Also uncovered a bug in the no-initializer case (ironically).
Remove JSException, support ternary if, support typeof ... == 'undefined'.

Also bind the global 'this' to the global environment, and generally do a bunch
of refactoring.
Implement ES6 generators.