Support circular dependency in System.register() under modules='instantiate' option

Uses two-phase declaration / execution process to separate
  dependency binding from execution.

Includes https://github.com/ModuleLoader/es6-module-loader.git as third-party/, License MIT, for testing circular references.  Adds tests for loading with circular references.

Closes #971, #953, #424, #107

Review URL: https://github.com/google/traceur-compiler/pull/958

Closes #958, closes #971.
Merge branch 'master' of https://github.com/google/traceur-compiler
Module naming and anonymous modules

This follows on from #974.

It allows the following compilation scenarios:

1. Don't write `__moduleName` with `--dir` option
  ```
    traceur --dir es6Modules amdModules --modules=amd
  ```
  Will now compile the directory of modules, without adding the `__moduleName` into all the modules. The same for CommonJS

2. Support AMD named defines - when the `ModuleName` transformer sets `this.moduleName` to a non-empty string, it will output a named AMD define of the form `define('moduleName', ...`.

3. With the previous it is now possible to compile a tree of ES6 into a tree of AMD named defines that will work directly as a RequireJS bundle:
  ```
    traceur --out outFile.js inModule.js --modules=amd
  ```
  This way you can immediately convert an application into a full RequireJS-style bundle in one go.

4. Allow a `moduleName` option for `traceur.compile` in the NodeJS API:
  ```
    traceur.compile('function p() {}', { modules: 'amd', moduleName: 'myModule' });
  ```
  will compile into a module with the `__moduleName` as set with a named define as well.

5. By default `traceur.compile` does not set the `__moduleName` at all assuming an anonymous module.

6. Similarly, by default `compile-to-amd` and `compile-to-commonjs` both assume anonymous by default.

Review URL: https://github.com/google/traceur-compiler/pull/988

Closes #988.