Fix some missing uses of _.isEqual without checking if custom compare is set first.

Looks like the issue you had was caused by not using the compare function. Spotted a potential issue in `changedAttributes` too.

I also spotted what I _thought_ was also an issue, with the use of _.isEqual for checking derived properties, but I see now that derivedProperties aren't allowed to be custom types, so we can only use _.isEqual for them. Is that something that should change too?

Please check my assumptions on how set works are correct, it's a pretty complex fn that I don't fully comprehend yet.