Don't dunder define

Use `Object.defineProperty` instead of `__defineGetter__` and `__defineSetter__`. I settled on utility methods as the least intrusive and bulky way to effect this change. This PR also includes an (optional) whitespace cleanup that replaces some tabs with spaces.

This is partial progress toward #711. Ready for review by @domenic.