Smarten up comparison a bit.

Instead of simply comparing on key name, now this compares two objects, property by property,
compiling a record of mutations required to turn the old object into the new one. Then, the
old object is mutated in place.

I'm not a big fan of this kind of thing, and it will probably break against React.