Good call on the mutation in `_validate`.

Regarding the arguments, I definitely think the arguments proposed better match the current pattern.

```js
c.add(m);
m.set('mustBeANumber', 'a', {validate: true});
// c triggers 'invalid' (m, 'error message', options)
c.add({mustBeANumber: 'b'}, {validate: true});
// c currently triggers 'invalid' (c, {mustBeANumber: 'b'}, options)
// I would expect 'invalid' ({mustBeANumber: 'b'}, 'error message', options) like the normal case
```

See what I mean there? And if we do this, we could probably **not** mutate options in `_validate` altogether.