Move validations higher in save function

Move the validation code to happen before the save funtion checks for enums being out of range.  This way the enum validators can catch the error and raise the event instead of throwing an error that breaks execution.
Merge branch 'master' of https://github.com/tonyd256/sequelize into tonyd256-master
added test for enum validation