Fix getter/setter class transform for multiple passes

If the same class/file is processed multiple times without reloading the
module, the getter/setter name is cached from the previous pass, which
lets the code incorrectly try to access a non-existing property
descriptor.
This fixes it by storing the dictionary of getters and setters in the
state.
Preserve generators when `preserveGenerators` is set

Normally the class transform "converts" generators to normal methods.
With this option set, the transform will preserve the generator. E.g.

```
class Foo {
  *gen() {
    yield 42;
  }
}
```

becomes

```
function Foo() {}
Foo.protoype.gen = function*() {
  yield 42;
}
```

This is of course not valid ES5, but this allows to use the output as
input to regenerator.