* Make HTTPHeaders more user-friendly
* Header name is a struct conforming to `ExpressibleByStringLiteral`.
Standard header names are available through static constants.
This allows to save some CPU on lowercasing and hash value
calculation.
* Original headers are stored until first modification. Iterator
of `HTTPHeaders` iterates over original headers while they are actual,
in other case it iterates over underlying mutable dictionary.
* Default subscript returns values of all headers with the same
name concatenated with comma [RFC7230, section 3.2.2], except
for "Set-Cookie" for which only first value is returned.
* As-is values of all headers with same name can be accessed
through subscript with label `valuesFor`.
* append() method is modified to accept dictionary literal.
replace() method is added.
* Split HTTPHeaders implementation to separate extensions