OAuth client SDK: Support token revocation via Logout helper (#1156)
Addresses #1135
Revocation has similar properties to session refresh, so I implemented
it in `ClientSession` alongside `RefreshTokens`.
A high-level `Logout` helper has been added to `ClientApp` which both
revokes the tokens against the AS and deletes the session from the app's
session store.
Due to aforementioned similarity between refresh and revocation, I
created the `ClientSession.postToAuthServer` helper to reduce duplicated
logic. (Note that "DPoP retry" logic is still duplicated elsewhere, I
couldn't think of any elegant way to eliminate it)
authored by