Add: CounterCache feature to hasMany models

as discussed in issue #1879 
This can be rewritten as: 
```js
it('increments', function() {
  return User.create().then(function (user) {
    expect(user.countGroups).to.equal(0);
    return user.createGroup().return(user);
  }).then(function (user) {
     return user.reload();
  }).then(function (user) {
    expect(user.countGroups).to.equal(1);
  });
});
```

Avoiding callback hell :)