Add support for PKCE
Add support for Proof Key for Code Exchange (PKCE) as described by RFC 7636. The only supported method is 'S256' as suggested by the RFC. If an OAuth2 provider supports this, it is enough to override get_use_pkce to make it return TRUE to enable PKCE.
Based on work done by Andrea Azzarone