fix(auth): derive the login name of a nickname the same way everywhere
LoginName makes users.name_lat of a nickname and holds the rules a nickname is checked by; registration, external sign-in, the panel, the profile, the user search and the installer all use it. The installer only lowercased the nickname, so an administrator with a space or Cyrillic in it could not sign in.
AccountByLogin finds the account at the sign-in and at the password recovery by the nickname as typed, then by the login name, and renews an outdated login name on sign-in when it is free. A nickname of nothing but symbols is refused. The profile keeps the nickname as typed.
AccountByLogin finds the account at the sign-in and at the password recovery by the nickname as typed, then by the login name, and renews an outdated login name on sign-in when it is free. A nickname of nothing but symbols is refused. The profile keeps the nickname as typed.