Add PKCE support
This MR implements the PKCE variant of the Authorization Code Flow. The implementation is based on the RFC and the documentation of auth0: https://auth0.com/docs/flows/call-your-api-using-the-authorization-code-flow-with-pkce. There are however some small differences between auth0 and keycloak.