Switch to defineProperty in all cases

Currently we use __defineGetter style syntax, but it has [been deprecated](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineGetter?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FObject%2FdefineGetter).

This switches us to using defineProperty, which works in every browser we support.  (IE9+, any non-ancient version of Firefox, etc.)
Set enumerable properties

This sets it so that the "private" 2D properties (`._x`, `._h` and so on) are non-enumerable, while their associated setter/getters are.

Seems to work in Firefox/Chrome/Safari, haven't checked mobile, can't test it in IE.
Merge pull request #728 from starwed/defineProperty

Switch to defineProperty; set enumerable flags to be consistent with private/public properties