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
Shouldn't we still expect our custom errors to be instances (sub-instances?) of the main JS Error object? Or did I misunderstand something?