Fix for error message translation (issue 332)

Defer the call to I18n.t for 'error_messages.email_invalid' because the I18n.locale may change between class initialization time and run time. This is definitely true in my app which handles users from multiple locales simultaneously, changing the locale for each request.

Update: OK this now includes a proper test.