refactor(validation): simplify the validation logic for email addresses
refactor(validation): simplify the validation logic for email addresses

There was a lot of stuff going on in the validation logic that could be
replaced by one call to `RegExp.test`. And some of it was quite weird,
like running a regex individually on each character in a string instead
of running one regex on the whole string. Regexes are fast but doing it
like that slows them down unnecessarily because you're paying for the
initialisation cost on every iteration.

This replaces all that with just two regexes that run over the whole
string, one for the user part and the other for the domain part. We can
do this refactoring confidently because of the test coverage added in
eaf36151fa60bb039c7a1e221fb4e85afc147552 (before that commit, this code
had no tests at all).

The regexes are based on what we use in fxa-email-service. Ideally we'd
just use the fxa-email-service one directly, but it relies on unicode
features that are still hidden behind a flag in our production version
of Node.js (`--harmony_regexp_property`). When we have proper unicode
regex support, we should replace these with the fxa-email-service regex
and ditch the punycode step.

mozilla/fxa-auth-server,mozilla/fxa-auth-server,mozilla/fxa-auth-server,mozilla/fxa-auth-server