Take Two on Case Sensitive Username and Email - #65

After reading the discussion and seeing that we had caught some other cases where email and username needed to be toLowerCase, I decided to make something a little more complete. 

1. Added two new settings, emailToLower and usernameToLower to allow customization of the feature. I have set emailToLower to true by default and username to false. (In my personal use I will use both to true).
2. The settings are checked in signIn and signUp
3. Have to force username to not be an email address as this could introduce an issue where username could point to two records or get the login confused anyway.

Seems to work well for me. Let me know what other issues I have missed or give suggestions and criticism.

Todo: 
 * Needs some tests written
 * I do not like where I put isStringEmail, seems it would be best as an addition to the String.prototype as isEmail. I just could not figure out where to put my String::isEmail = assignment. 
 * I attempted to translate my new error.usernameIsEmail text. That needs to be proofed.