Add partial validation support

Currently when setting an attribute to a model with the `validate` flag set to `true`, the entire model is being validated.

As discussed at #1581 and #914, the model could be in an inconsistent state until `save` (model initialization or setting attributes with `{validate: false}`), but we could want to set new attributes and validate these changes without care on the previous invalid attributes.

I added a new value for the `validate` flag, `"partial"`, so we could `set` and `validate` an attribute without validate the entire model.

```javascript
model.set({name: 'Foo'}, {validate: 'partial'})
```
By default all methods that receive a `validate` flag work as usual, but now we can specify the `{validate: 'partial'}` option.

Please, let me know if this change makes sense for you ;)