This module provides the data types for representing HTTP headers, and
operations for looking up header values and working with sequences of
header values in Requests and Responses. To avoid having to provide
separate set of operations for doing so, we introduce a type class HasHeaders
to facilitate writing such processing using overloading instead.

HTTP HeaderName type, a Haskell data constructor for each
specification-defined header, prefixed with Hdr and CamelCased,
(i.e., eliding the - in the process.) Should you require using
a custom header, there's the HdrCustom constructor which takes
a String argument.

insertHeader hdr val x inserts a header with the given header name
and value. Does not check for existing headers with same name, allowing
duplicates to be introduce (use replaceHeader if you want to avoid this.)

parseHeaders hdrs takes a sequence of strings holding header
information and parses them into a set of headers (preserving their
order in the input argument.) Handles header values split up over
multiple lines.