Changed getter and setter definitions

__The problem:__

```__defineGetter__``` and ```__defineSetter__``` were not working on IE9. Besides that, these methods are deprecated according to MDN:  https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineSetter

__Solution:__

Use ```Object.defineProperty``` instead, as it is ES5 preferred syntax, and works on IE9. https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineProperty