Add Basic OpenID Connect support including UserInfo endpoint


Under OIDC, `preferred_username` is a claim, not a scope. `username`  and `preferred_username` are aliases and are only supported in non OIDC requests.  I basically added it for compatibility with what we already had, but we can remove them if we update the dashboard to use `profile` scope to retrieve the `preferred_username`.

I'll add a comment.