Instantiate bindings implementation

This updates instantiate to the new bindings system as discussed with @caridy and @matthewrobb.

This is not passing the tests yet, as we need to first create the corresponding implementation in the ES6 Module Loader. The code can be reviewed initially in the mean time.

@arv is there any chance you can assist with working out how to ensure EmptyStatements don't display on as an empty line statement?
This is pretty confusing: we are compiling into something like `System.register()` in the instantiate format and writing to a file. Then we are reading the file, transcoding it (es5->es5) with `TracerLoader`, prepending the traceur runtime (with its `System` pointing to `ModuleStore`), then executing the result in a sandbox and discarding the result.  Then we use the current `System` -- recently set to ESML -- to import the file which presumably compiles it again and executes it. This does not seem like what we want to do ;-)  (It was also not what we wanted before, either).

I think we want is to put the `System.import()` code into a file then do something more like
```js
      var systemPath = resolve('../../../third_party/es6-module-loader/system');
      var system = fs.readFileSync(systemPath, 'utf-8');
      var instantiateTestPath =  ...some file name
      var instantiateTest = fs.readFileSync(instantiateTestPath, 'utf-8');
      var context = vm.createContext();

      if (debug) {
        context.console = console;
        context.debugGenerated = true;
        console.log(output);
      }

      vm.runInNewContext(system + instantiateTest, context, fileName);

      return context.result;
```
That is, we are creating a source code consisting of the ESML System and a dynamic module load then executing it in a sandbox. The `then()` function callback will need to set the global `result` to something.

Does that make sense?