Object.observe-style change records.

:warning: not ready to be merged: the delivery of these records should be async. @slightlyoff is hoping to land his promises implementation shortly so I'll wait for that. Once that's in place I will need to fix both the code and the test.