System output format tests

These cover all the updates as mentioned in #212.

We can potentially leave out hoisting, but live bindings would be nice to keep.
Hi @guybedford 
I don't understand this behave....

#### Actual :

```js
export {foo};
export {foo, bar};
export {foo as bar};
export {foo as default};
export {foo as default, bar};
```

The above 'actual' file don't specify any imported file so how can it be linked
to the first imported module in the expected returned setters ?

```js
System.register("actual", [], function (_export) {
  "use strict";

  var __moduleName = "actual";

  return {
    setters: [
    function(m) {
      _export("foo", m.foo);

      _export("foo", m.foo);

      _export("bar", m.bar);

      _export("bar", m.foo);

      _export("default", m.foo);

      _export("default", m.foo);

      _export("bar", m.bar);
    }],
    execute: function () {
    }
  };
});
```

I understanding the setters array as an array that map the module imports. 
Ain't I wrong ?