3.0 countercache

ref #4797 

This fixes the counter cache not being updated when the belongsTo association field is modified.
It introduces a `_oldProperties` to Entities and allow to freeze all properties value when saving.

Unfortunatly as @markstory stated in the issue it doubles the amount of memory each modified entity uses.

Might be good to clarify this is the *original* value, not the last or most recent ones.