ES6 support

Working features:

* Unicode Code Point Escape Sequences (`\u{ABCDEF}`).
* Numeric Literals (octal, binary).
* Arrow Functions.
* Spread Element.
* Classes.
* Destructuring assignments.
* Computed object properties.
* Object methods.
* Shorthand object properties.
* `for (... of ...)` loops.
* Array Comprehensions.
* Modules. (newest specs)
* Template Strings.
* Generators.
* Generator Comprehensions.

Closes #78.
I expected you would ask for this, but hoped that we can move on and use ES5 features for the sake of speed. Ok, let me change it.