System.register update

This includes the System.register update corresponding to the new format implemented into Traceur here - https://github.com/google/traceur-compiler/pull/1161.

All tests are passing!
> I'm just using the module object itself directly... it does mean the module object is writable. As in the comment, it should be a read-only property through Object.defineProperty.

agree, all modules registry thru System.register() are fine since they will be controlled code that will never attempt to modify the imported (which is a static error during transpilation), so we are good here!

> The reason I can't use a proxy object is because if a module imports module M from 'm', we need to be handing the true module object over.

Here is what I have some concerns. If you do `System.import('foo')`, the promise fulfills with a reference to the live bindings, the same if you do `import * as foo from "./foo";`, where `foo` is going to be the live bindings, what's why in the microloader, at the same time I update `moduleObj[name] = value`, I also check if there is a need to define a new binding on the proxy object, in case I want to use that proxy object later on.