A ChunksIntEncoder which encodes data in chunks of 8. Every group starts with a single
byte (called indicator) which represents 8 - 1 bit flags, where the value:

1 means the encoded value is '1'

0 means the value is encoded using VInt8IntEncoder, and the
encoded bytes follow the indicator.
Since value 0 is illegal, and 1 is encoded in the indicator, the actual
value that is encoded is value-2, which saves some more bits.

createMatchingDecoder

Returns an IntDecoder which matches this encoder. Every encoder
must return an IntDecoder and null is not a valid
value. If an encoder is just a filter, it should at least return its
wrapped encoder's matching decoder.

NOTE: this method should create a new instance of the matching
decoder and leave the instance sharing to the caller. Returning the same
instance over and over is risky because encoders and decoders are not
thread safe.