Object.observe alternative es5 implementation