PKCE S256 validation and verification as defined by RFC 7636.
S256
@spec challenge(String.t()) :: {:ok, String.t()} | {:error, :invalid_verifier}
@spec valid_challenge?(term()) :: boolean()
@spec valid_verifier?(term()) :: boolean()
@spec verify(term(), term()) :: boolean()