New class transformer

This changes how we generate the code for classes.

This is a resurrection of 8da9429 and 5d8db52 with changes to not make the functions hoist.

```js
class C extends B {}
```

now compiles to

```js
var C = function() {
  $traceurRuntime.defaultSuperCall(this, $C.prototype, arguments);
};
var $C = ($traceurRuntime.class)(C, {}, {}, B);
```

Review URL: https://github.com/google/traceur-compiler/pull/517

Closes #517.
Move getVariableName to static FreeVariableChecker.
Allow derived classes to use this helper function
respond to review