Given an object and a property, replaces a property descriptor (or deletes it), and returns a thunk to restore it.