don't load plugin of unsupported types
remove unsupported service file
cleanup: bool_variable= -1; -> bool_variable= true;
cleanup: normalize LEX_USER to get rid of different representation of the same thing

  username IDENTIFIED BY PASSWORD xxx
  username IDENTIFIED VIA mysql_native_password USING xxx
  etc

also check for valid strlen(xxx)
cleanup: sql_acl.cc

* remove no-op check_password_policy() and references to it
* add 'static' to functions that need it
* remove unused function check_acl_user()
bugfix: IDENTIFIED BY clause was lost in some GRANT variants
sql_acl.cc: better recognize the context to tell the role from a user

REQUIRE and MAX_QUERIES_PER_HOUR can not possibly apply to a role
parser: store the password hash in LEX_USER::auth, not in ::password

* indeed, "username IDENTIFIED BY PASSWORD hash" is the same
  as "username IDENTIFIED VIA mysql_native_password USING hash"
* LEX_USER::password can now be used for plain-text passwords
GRANT: calculate pasword hash in sql_acl.cc

don't do it in the parser, one should not make run-time
decisions (like, checking thd->variables.old_passwords variable)
during parsing.
password validation plugin type and a simple plugin
password validation function in sql_acl.cc
cleanup: s/(OLD_)?PASSWORD/&_SYM/g
validate SET PASSWORD
strict_password_validation
cracklib_password_check plugin
test for two password validation plugins

when many plugins are active, all must approve the password