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.

it's called with the entity first `save()` not create