Add optional getter and setter support for classes.

If the transform option `es5` is set to `true`, the class transform will
now use `Object.defineProperty(...)` to create getters and setters. Line
numbers are preserved.

Example:
```
class Foo {
  static get answer() {
    return 42;
  }

  get title() {
    return this._title;
  }

  set title(value) {
    this._title = value;
  }

  get "foo bar"() {

  }
}
```

converts to
```
function Foo(){"use strict";}
  Object.defineProperty(Foo,"answer",{enumerable:true,configurable:true,get:function() {"use strict";
    return 42;
  }});

  Object.defineProperty(Foo.prototype,"title",{enumerable:true,configurable:true,get:function() {"use strict";
    return this.$Foo_title;
  }});

  Object.defineProperty(Foo.prototype,"title",{enumerable:true,configurable:true,set:function(value) {"use strict";
    this.$Foo_title = value;
  }});

  Object.defineProperty(Foo.prototype,"foo bar",{enumerable:true,configurable:true,get:function() {"use strict";

  }});
```