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.

I guess my concern is that isNew now has side effects that are not entirely transparent. I for one would expect old values to be stored as new values are created, not when I check the object state.