Move token auto-refresh

This takes advantage of existing expiry checks and works more like if
OAuth2Session.request() was used.

Probably won't refresh revoked tokens as that would be noticed in the
request itself which is outside the control of this plugin.
Unindent HTML snippet using standard library function
Make dialog border rounded

People apparently don't like sharp corners these days.
Release prep for 1.2.0
Tweak .well-known fallback handling

This raises a better error than "'NoneType' is not iterable" in case
neither URL return something useful. Also reports the RFC path rather
than the OpenID one in the final traceback.
Strip indentation from redirect page

Mostly being pedantic, looks nicer if you view source
Support passing login hint via explicit --oauth2-login-hint argument

Explicit > implicit

Also helpful in case the username contains '@', e.g. like an email or
XMPP address.
Make redirect response page look nicer
Support passing 'login_hint' to the Authorization Server

Running `https -A oauth2 -a username@authorization.example` will pass
'username' as login_hint parameter.

https://openid.net/specs/openid-connect-core-1_0.html#rfc.section.3.1.2.1
Release prep for 1.1.0

--oauth2-token-refresh=on-expire|always added
Add way to force refresh of e.g. a revoked token

This plugin does not get any feedback from HTTPie about whether the
final request was authenticated or not, so in case it was not because
the token has been revoked or otherwise no works, something has to be
done to get a new token.
Request new authorization if token can't be refreshed
Forget invalid (revoked?) refresh tokens

This way, repeating the command will do the authorization flow again.

However we can only do this while attempting to renew the token, if it
is invalidated while valid according to the timestamps, only HTTPie sees
it, not this plugin.
Also look for server metadata at the OpenID well-known location

Because why would there be a single well-known location when there can
be multiple?
Implement RFC 7636 Proof Key for Code Exchange by OAuth Public Clients

Why isn't this supported in requests-oauthlib?
Next