Store HTTP headers in lowercase for HTTP/2 compatibility
HTTP/2 requires all header names to be lowercase (RFC 9113). Previously,
the library stored headers with canonical HTTP/1.x capitalization (e.g.,
"Accept-Encoding"), causing HTTP/2 requests to fail with "Header name
contains uppercase" errors.
Since HTTP/1.x headers are case-insensitive (RFC 9110), storing them in
lowercase is equally valid for both protocols. This change:
- Updates Headers.add and Headers.set to store lowercase names
- Removes uppercase validation from validate_h2_user_headers
- Removes redundant headers_to_h2/headers_of_h2 wrappers from h2_adapter
(now just uses Headers.to_list/of_list directly)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>