Support environments with both window and global

Fixes #1340
Closes #1377
feat(runtime): add memoization to genericType()
Support glob patterns in file names while compiling with --out

Hi guys,

I would like for the compiler to support shell patterns in sources' file names when compiling with --out option. Currently we can either use module names or file names/full paths while listing sources for compilation. That is, for example, we are currently doing this:

`traceur --out compiled.js module1.es6.js module2.es6.js module3.es6.js`

with patterns we can do it like this:

`traceur --out compiled.js *.es6.js`

or use any other pattern that glob library supports.

This patch doesn't add much in terms of complexity and since the glob library is already used in the project, we also don't need any new dependencies. It shouldn't cause problems with backwards compatibility because it only affects file names that use glob's special symbols (*, ?, [, ], etc) which are not normally used in file/module names.

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1542

Closes #1542.
Don't call require('path') in the runtime unless --require is used.

Drive-by: remove redundant code in runtime.js.
Fixes #1531

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1543

Closes #1543, closes #1531.
We depend on glob >4.3, correct package.json

See also issue #1542

TBR=@arv

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1547

Closes #1547.
Stop chdir into test for feature tests.

Fixes #1317
Remove require() calls in Loader test.
Fixes #1546

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1548

Closes #1548, closes #1317, closes #1546.
Move regexpu to devDependencies, as it is not required in deps.
Block binding: Fix issue with sibling scopes

This introduces a new Scope subclass that keeps track of references.
Then we use that to determine if we need to rename the binding or not.

Fixes #1358
recursiveModuleCompileToSingleFile: chdir on reject

Make `process.chdir` to original dir of compilation if failed. For success result chdir revert already exists.

It is needed if you need to execute other scripts after traceur compilation. And if it failed - dir should be changed to original.
Add support for type parameters for classes
Support Web Worker context for polyfills
Improve source-maps=memory.

Correct the key for sourcemaps in mode 'memory'
Add unit test for sourceMaps:memory from interpreter.
Add sourceURL when the input name differs from output name.

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1534

Closes #1534.
Move ./test/runner.html -> ./testRunner.html.

When run under node, the test system assumes that we start in the root of the Traceur directory.
This assumption is baked into various paths in the tests and expected error messages. To mimic this
assumption in the browser tests we need to move the test file up on directory to the root.
Fixup Loader tests for test/ path.
This is the browser cleanup after removing the 'chdir test'.

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1555

Closes #1555.
Extends expression should be a LeftHandSideExpression

fixes #1556
0.0.79
Remove the need for inputFileExtension_

We no longer care what the file extension is since we do not append
a file extension when we resolve the module URL.

Fixes #1544
Refactor sourcemap generation to combine generator and sourceUrl.

This helps ensure the generator has the same sourceURL as the //# source.
Update SourceMap.js test.

Review URL: https://api.github.com/repos/google/traceur-compiler/issues/1561

Closes #1561.
Add Math polyfill

This implements the new ES6 Math functions.

The implementation is based on V8 and MDN as well as the spec.

The tests are mostly just smoke tests. I'm not testing a lot of
edge cases.
Make sure we reinitialize let bindings in loops.

In case we had a let bindings without an initializer inside a loop,
make sure we initialize it to undefined.

Fixes #1567
Array destructuring should use iterators

The assignment

  [x] = obj;

should desugar to something like:

  $tmp = obj,
  $iter = $tmp[Symbol.iterator](),
  $iterResultObject = $iter.next(),
  x = $iterResultObject.done ? undefined : $iterResultObject.value;
  obj

When you add holes, spread and default initializers it gets even
hairier.

Fixes #840