validate email address format when creating/updating accounts

so, ```validateUser``` ```validCreateUser``` and ```validateUpdateUser``` were all implemented with the idea of being extension points in mind. Because of that I wanted to keep the potential Exceptions more broad to allow flexibility going forward. It also allows us to add on new features and new Exceptions without needing to change method signatures which would cause existing code programmed against the methods to need to be updated.

one of the potential validateUpdateUser extension point could be the check to see if the user is changing their password and throw an exception if the new password is in the recent password list