Replace deprecated  `__defineGetter__` and `__defineSetter__` syntaxes.

`__defineGetter__` and `__defineSetter__` are deprecated, use `Object.defineProperties` instead
Remove obsolete checking for preexisting setters
Test that an exception should be thrown if setter already exists
Add TODO for v0.7

Reminder to remove magic setters, deprecated since v0.6
Minor grammar correction in test notice
Check that hook redefinition includes hook name in raised exception