Add password validation

This commit implements two major aspects of password validation:

1. A utility function that makes sure a password meets OWASP
security rules as specified in
https://www.owasp.org/index.php/Password_length_%26_complexity
and
https://www.owasp.org/index.php/Password_length_%26_complexity
Specifically, passwords must:
- not repeat part of the email address
- have lowercase
- have uppercase
- have a number
- have a symbol
- be at least 8 characters

2. UI to tell a user what part of their password doesn't
meet the password rules.  If you've ever tried to create a
password in a system that doesn't give you visual feedback,
it is really annoying and frustrating.  Instead, tell people
why their password works or doesn't.

Addresses the pull request in #105 and issue comments
from @jhinton in #75.