Add: CounterCache feature to hasMany models

as discussed in issue #1879 
The rest of the code used this pattern, so I just thought I'd follow suite :) I'll change it to the constructor way of course, also thought that was more reasonable.