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.

Since we are no longer wrapping the code in an IIFE at all times we need to inject `'use strict'` into the function bodies if the enclosing code is not strict.

This also adds support for a transformer to return more than one tree by returning an `AnonBlock`. Anonymous blocks are flattened in `transformList`.

Fixes #322

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

Closes #436, closes #322.