Add 'extra' auxiliary property for transform vistors to return arbitrary data

Summary: Adds an 'extra' property onto `state.g`, acessible by visitors,  as a means to return auxiliary data from jstransform.

Test Plan:

Reviewers:

CC:

Task ID: #

Blame Rev:
[ES6] Destructuring Assignment

Destructuring assignment / pattern matching feature of ES6.
[ES6] Support Spread/Rest in Array patterns

One of the left TODOs: Spread/Rest elements of an array pattern in destructuring.

  var [x, ...xs] = [1, 2, 3];
  console.log(x, xs); // 1, [2, 3]
[ES6] Use temp allocation index per scope

We started to receive lint warning about "var redeclaration". This was due temp allocated vars reused temp index, that
produced several `var $__0`, `var $__0` statements.

Technically it wasn't an issue for the real code, mostly for the JSHint linter, however, instead of tweaking the linter, I decided to go in the
correct way, and use temp vars index per scope.

The `tempVarIndex` property in the `localScope` of the state stores the current temp index. This can be reused in other transforms that will require
usage of temp vars.
[ES6] Class transform: fix param munging in Arrow Function

Arrow Functions were forgotten in params munging.
ES6: Fix `Unnecessary "use strict"` in Class Transform

This fixes a bug that causes unnecessary `"use strict";` to be printed in the transformed code.

NOTE: https://github.com/facebook/jstransform/pull/16
[ES6] Fix super calls in methods

- Short super calls per the spec [1] should call parent method with the same name, not the parent constructor;
- Fixed literal method names.

[1] http://people.mozilla.org/~jorendorff/es6-draft.html#sec-makesuperreference
[JS] Trailing comma in Array and Object Initializers

People want to write trailing commas in Array and Object initializer to be consistent with PHP in this case. In prod, we already have a
minifier that strips the trailing comma, but not in dev, that causes problems of testing in IE.

This is the follow up of stripping commas, and Array and Object literals, but only those which have the trailing comma.

Alternatively, if we could configure the comma removal for dev, that would probably better that this transform. Though, if we don't have an alternative here, the transform is the way to go.
Fix license header
Fix syntax error in es6-destructuring-visitors-test.js
Make ES6 class transform throw if it encounters getter/setter methods on a class

The transform targets ie8/es3, and getters/setters
are...well...extremely difficult to compile with that as a target. As
such, this transform shouldn't support them.

Not to mention that the transform was doing entirely the wrong thing
with these method types before.
[ES6] Wrap Arrow Functions into a grouping operator

In case if an Arrow Function is not in the expression position, we should turned it into a function expression.

  (x) => x;

should compile to:

  (function(x) { return x; });

previously it's compiled to:

  function(x) { return x; };

that is a syntax error: "Function Declaration w/o a name"

In case when the arrow is already in the expression position, grouping is not needed.
[jstransform] Object Spread Properties

Adds support for spread operator in object literals.

There is a special case for accessors which needs to use defineProperties
as the shim. This initial transform doesn't support it but can be chained
with one that does.

Depends on https://github.com/facebook/esprima/pull/22
Update to latest esprima

This is actually required for the previous commits.
codemod: replace @emails @lists
Merge pull request #15 from aexmachina/master

Pass the filename through to the SourceMapGenerator
Use latest jest patch-version
6.0.0