Make code_verifier an abstract type with RFC 7636 §4.1 validation
code_verifier is now abstract — can only be created via
generate_code_verifier or code_verifier_of_string (which validates
43-128 chars from [A-Za-z0-9._~-]). Prevents passing low-entropy
strings to code_challenge.
code_verifier_to_string provided for session storage. exchange_code
now takes code_verifier instead of string. 2 new validation tests.