Add support for class member variable

supersedes #1417
I have 
```
    if (tree.typeAnnotation === null) {
      def = parsePropertyDefinition `set ${name}(value) { this.${identifier} = value; }`;
    } else {
      var type = tree.typeAnnotation.memberName.value;
      def = parsePropertyDefinition `set ${name}(value:${type}) { this.${identifier} = value; }`;
    }
```

which is fine when the arg is not typed. Otherwise it gets transpiled to 
`assert.argumentTypes(value, $__placeholder__1);`