Do not hoist the class name binding when hoisting variables

Fixes #987
Fix string decoding in LiteralToken.js
Generator object model

- A generator function should be an instance of GeneratorFunctionPrototype.
- Instances of a generator should an instance of the generator function.
- Overriding the function name should not break the generator.

Fixes #112, #616, #928
HoistVariableTransformer should understand destructuring
Keep binding identifiers in assignment patterns
new System.register for circular dependency support
Uses two-phase declaration / execution process to separate
  dependency binding from execution.