Removed dependency on Object.observe

Replaced it with defineProperty, which is faster and is relatively well
supported.