Make es6 rest params work with arrow functions + class methods

Summary: This fixes the es6 rest param transform so that it will also work with class methods and arrow functions.
Fix es6 class transform munge edge-case

Summary:
Per the task, a buggy edge-case was found where we were munging identifiers improperly:

```
var _foo = 11;
var DATA = {};
class Bar {
  _test() {
    return DATA[_foo];
  }
}
```
was being transformed to
```
var _foo = 11;
var DATA = {};
function Bar(){"use strict";}__w(Bar, {"type":"Bar"});
  Bar.prototype.$Bar_test=function() {"use strict";
    return DATA[$Bar_foo]; // Shouldn't have changed from `DATA[_foo]`
  };
```

Problem was that, when munging, we weren't distinguishing between member expression property idents being used as direct lookups vs computed lookups. This fixes the issue + adds a new test.
Add transform for ES6 templates

Summary:
See http://people.mozilla.org/~jorendorff/es6-draft.html#sec-12.1.9
https://github.com/dherman/tc39-codex-wiki/blob/master/data/es6/template-strings/index.md
http://wiki.ecmascript.org/doku.php?id=harmony:quasis

I really only want this for multiline strings. Tagged templates could be interesting for fbt.