Fix cache saving stale data

After fixing a problem with object caches not being correctly invalidated we discovered a regression. Saving instance properties would trigger the object cache system to increment the timestamp on the instance and save it a second time. Unfortunately, it was also saving old field values, overwriting the changes.

The solution is to fetch the object from the database before incrementing the counter, ensuring that we do not write back stale values.
@maurizi Perhaps you are missing the *even* greater context around this. There is no *the* signal, there is only *a* signal. Signals accumulate, and no developer looks at existing signals when they create new ones.

This is fine if we are careful to make sure that the app never relies on a signal or a `save()` method to validate/cleanup consistency of state, or to update fields on another model with an indirect relationship. It's easy to lose track of that stuff.

I just wanted to bring this to everyone's attention.

> Be aware that the update() method is converted directly to an SQL statement. It is a bulk operation for direct updates. It doesn’t run any save() methods on your models, or emit the pre_save or post_save signals (which are a consequence of calling save()), or honor the auto_now field option. If you want to save every item in a QuerySet and make sure that the save() method is called on each instance, you don’t need any special function to handle that. Just loop over them and call save()