Change header table to array and track references with long

The static reference set has <64 entries, so we can use bits in a long to designate they should be emitted.  We can use the same approach for the dynamic table, with a constraint that it limits application to HTTP requests or responses that have less than 64 headers.

This approach not only makes HeaderEntry immutable, but it is far more efficient.

```
# before
Starting experiment 3 of 18: {instrument=allocation, benchmarkMethod=decodeIndexedHeaderFieldFromStaticTableWithoutBufferingOkHttp, vm=default, parameters={}}… Complete!
  bytes(B): min=600.00, 1st qu.=600.00, median=600.00, mean=600.00, 3rd qu.=600.00, max=600.00
  objects: min=13.00, 1st qu.=13.00, median=13.00, mean=13.00, 3rd qu.=13.00, max=13.00
Starting experiment 5 of 18: {instrument=allocation, benchmarkMethod=decodeLiteralHeaderFieldWithIndexingOkHttp, vm=default, parameters={}}… Complete!
  bytes(B): min=808.00, 1st qu.=808.00, median=808.00, mean=808.00, 3rd qu.=808.00, max=808.00
  objects: min=20.00, 1st qu.=20.00, median=20.00, mean=20.00, 3rd qu.=20.00, max=20.00
# after
Starting experiment 3 of 18: {instrument=allocation, benchmarkMethod=decodeIndexedHeaderFieldFromStaticTableWithoutBufferingOkHttp, vm=default, parameters={}}… Complete!
  bytes(B): min=544.00, 1st qu.=544.00, median=544.00, mean=544.00, 3rd qu.=544.00, max=544.00
  objects: min=10.00, 1st qu.=10.00, median=10.00, mean=10.00, 3rd qu.=10.00, max=10.00
Starting experiment 5 of 18: {instrument=allocation, benchmarkMethod=decodeLiteralHeaderFieldWithIndexingOkHttp, vm=default, parameters={}}… Complete!
  bytes(B): min=680.00, 1st qu.=680.00, median=680.00, mean=680.00, 3rd qu.=680.00, max=680.00
  objects: min=15.00, 1st qu.=15.00, median=15.00, mean=15.00, 3rd qu.=15.00, max=15.00
```