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.~~
From what I understand in node-webkit

- ```this``` is ```[window object]```
- ```window``` is ```[window object]```
- ```global``` is ```[global object]```
- ```self``` is ```[window object]```

Putting things on the ```global``` wont show up on the ```window``` or ```this```
I don't think the ```self``` part needs to be included because ```(self === this) === true``` for me (on windows 8.1)

We only need to add the ```window``` part and keep it in the order @stevenvachon has put