support environments with both window and global

Such environments include [node-webkit](https://github.com/rogerwang/node-webkit) and [atom-shell](https://github.com/atom/atom-shell).

This clears #1340 

---

~~This breaks the following tests within test/unit/node/generated-code-dependencies.js:~~
* ~~`test('class'`~~
* ~~`test('generator'`~~
* ~~`test('generator (symbols)'`~~
* ~~`test('compiled modules'`~~
* ~~`test('compiled modules inline'`~~
* ~~`test('compiled modules mix inline & script'`~~

~~I have not yet investigated the `child_process.exec()` based tests, however the `vm.runInNewContext()` tests have an issue with `global` within indirect `eval()`s. It gets pretty deep and difficult to debug. I am still working on this, but any help would be appreciated.~~
The important thing is that whatever property we use as the global will be
available as an unqualified reference.

var x = {};
$global.foo = x;
assert(foo === x);
 On Sep 26, 2014 11:36 AM, "Steven Vachon" <notifications@github.com> wrote:

> In src/runtime/ModuleStore.js:
>
> > @@ -269,4 +269,4 @@
> >      return instantiator && instantiator.getUncoatedModule();
> >    };
> >
> > -})(typeof global !== 'undefined' ? global : this);
> > +})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this);
>
>
>    1. While both this and self have the same contents, this!==self
>    according to my tests. Could such cause issues?
>    2. discovering that possibly my issue was only with a similar bug in
>    SystemJS and not Traceur -- will report back soon
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/google/traceur-compiler/pull/1377/files#r18095797>.
>