[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.