Refactoring of Error Handling

Per https://github.com/sequelize/sequelize/pull/1971 I have refactored error handling. The changes include:

* Proper inheritance of Error objects as described in this [SO post](http://stackoverflow.com/questions/8802845/inheriting-from-the-error-object-where-is-the-message-property)
* Addition of a new `errors` property on the SequelizeValidationError class to include an array of all validation errors
* Helper method on SequelizeValidationError to find all errors for a specific path
Yup, those assertions should be left intact, Sequelize errors should also be instance of `Error` and this must be tested