Add: CounterCache feature to hasMany models

as discussed in issue #1879 
Plugins seems to be `external`, and normally you implement plugins from the outside in and not the reverse.