feat(headers): return joined multi-headers

In case of multiple headers with the same field-name, return them
in insertion order (required) and joined by ", " (allowed).

An optional<T> which can move rvalue T is preferred to efficiently
support this change.