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?
While this looks like a module load, we are actually overwriting `global.System` right? So any test that runs before this is using a different value for `System` than any test which runs after.  

See below.