Add support for class member variable

supersedes #1417
Here is an example:

```js
class C extends class {
  x: number;
} {
  y: number;
}
```

Contrived? Yes, but valid no matter.

Please make sure you have a test for this as well as a test for the following:

```js
class C {
  m() {
    class D {
      x: number;
    }
  }
}
```