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?
Yes, all declarations of this kind of form are reduced to:

```javascript
module M from 'm';

->

var M;
```

Later the `var` gets hoisted by the hoisting operation along with other local vars.

The module itself is set through the binding records which are kept rather.