HeaderTokenizer seems to work correctly.

Still needs more commenting and simplifying of code. Note that this
tokenizer does not perform validation of header field bodies. Once the
tokenizer has consumed the first printable ascii character after the colon
(excluding another colon) it simply consumes all other ascii characters
until the next CRLF printable-ascii-char is reached (indicating that we are
tokenizing a new header field name). Some examples:

Content-Type::text/plain      => Will emit an error
Content-Type: text/plain      => OK
Content-Type:      text/plain => OK
Content-Type: text/plain;
    application/json;
    foo/bar                   => OK