Add: CounterCache feature to hasMany models

as discussed in issue #1879 
Hmm maybe we should look at updating refreshAttributes so it can handle this.