Change class transformer to use hoisting

We now generate FunctionDeclarations, which hoists as needed.

For example:

```js
class B {}
```

generates

```js
function B() {}
$__class(B, {}, {});
```

and

```js
class B extends C {
  constructor() {}
}
```

generates 

```js
function B() {}
$__classExt(B, {}, {}, C);
```

These two are the simlest case. When we use `super` we need to capture a binding to the proto parent.

For ClassExpression we still need to use an IIFE to encapsulate the name and/or the proto parent.

Fixes #322