Update dependencies and fix an es6-arrow-function conflict.

The latest version of the es6-arrow-function library fixed a behavior around `arguments`, namely that `arguments` references inside an arrow function should refer to `arguments` from the parent scope.

This caused a problem with the way rest params were being tested with arrow functions. If you compile rest params first you end up with an `arguments` reference inside an arrow function, which will be moved out. If you compile arrow functions first you end up losing the rest params because recast does not yet support printing ES6 that wasn't parsed by Esprima.

The solution to this was to use `#transform` instead of doing the source-ast round trip twice.

Also, the AST being generated was slightly incorrect. I've fixed that in the third commit.