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.  The 2nd paramter, maxSizeLimit, of NewEncoder is
required to make an upper bound of memory commitment.  This is vital
since maximum value set by SetMaxDynamicTableSize is sent from remote
peer, they might send large value and it might make server exhaust its
memory.  Currently, maxSizeLimit is set to initialHeaderTableSize,
which is 4096.