Use Object.defineProperty instead of __defineSetter__

__defineSetter__ is not standardized and not supported in IE. It thus breaks Travis completely in IE. This not only fixes https://github.com/travis-ci/travis-ci/issues/1001 but also ensures that the JavaScript code is standards-compliant.

This basically does the same for setters than #1 did for getters.