Object.observe, but recursive. Also observes paths.