Implement HPACK encoder that actually compresses header block

This commit implements HPACK encoder that actually compresses header
block.  The encoder supports Huffman encoding strings and table size
update.  The Sensitive in HeaderField struct is also honored and if it
is true, header field is encoded as one of Never Indexed
representation.  SetMaxDynamicTableSizeLimit is use to set an upper
bound for the value set by SetMaxDynamicTableSize.  This is vital
since the value set by SetMaxDynamicTableSize is sent from remote
peer, they might send large value and it might make server exhaust its
memory.  Initially, maxSizeLimit is set to initialHeaderTableSize,
which is 4096.