http: Multipart parser (RFC 7578) + Content-Disposition header
New Http.Multipart module parses multipart/form-data bodies:
- parse : Headers.t -> string -> (part list, _) result
- parse_with_boundary : ~boundary:string -> string -> ...
- boundary_of : extracts the boundary parameter from Content-Type
Each part exposes name, filename, content_type, and full headers.
Rejects malformed input with a typed result (no silent fallback):
- missing boundary parameter;
- non-multipart Content-Type;
- missing opening or closing delimiter;
- part missing Content-Disposition or name=.
Preambles, epilogues, CRLF/LF variants, quoted + backslash-escaped
filenames, and body bytes that resemble-but-aren't the boundary all
handled. 15 tests cover those cases and mixed-part ordering.
Header_name: add `Content_disposition (RFC 6266 / RFC 7578) to the
standard variant set so headers-by-variant API works.