Make HTTP status phrases optional with a fallback for known codes

RFC 7231 defines status line as follows:
"The first line of a response message is the status-line, consisting
of the protocol version, a space, the status code, another
space, a possibly empty textual phrase describing the status code,
and ending with CRLF."

- This basically means response phrase is optional and may be omitted.
In that case, fall back for default response phrase for known codes or
empty string for others.

- Fix usage of explicit HTTP/* header to set response phrase properly,
if set.

- Also synchronize default phrases to match codes defined in RFC.

Closes #3907. Closes #3945. Partially reverts 93a6dc27c9.