authorized_keys.py: accept ssh-ed25519 and similar future types

Unfortunately, both options and key algos/types have practically the
same basic syntax (\w+) so the only two ways to distinguish between them
are:

- whitelist known types (or at least type prefixes) as the code is
  currently doing, or

- search for the first token that starts with the string ("\0\0\0" +
  prev_token).encode("base64"), then go backwards by 1.

The second option is more reliable but also somewhat ugly.
authorized_keys.py: find key type by matching against blob prefix

Resolves the possible ambiguity in the old method used to distinguish
between options and key type. However, the parser now rejects lines that
have mismatched types (i.e. plaintext type different from the one in key
blob).
authorized_keys.py: catch exceptions in test mode
authorized_keys.py: add option for code removed in last commit

Re-add the old type checking, and make it optional (strict checking from
last commit will continue to be the default).