Add method to check validations

Pretty simple really - this adds a public method to run the validations for a model. Also, refactored the `save` method to use `checkValidations`.
This method name is a bit strange to me. Its either throwing an exception or returning the model itself, and yet its called `checkExceptions()`. I'm not exactly sure what it's "checking" here, as the result is either a stop-the-world non-return or a return of the model itself.

It would probably make more sense to call it `assertValid()` (thanks @brianmuse) or something along those lines. However the necessity of this method is another concern.