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);
```