The low level read operations for primitive types must be implemented.
Also contains some higher level functions such as variable integer decoding and compression support, which have a
default implementation based on the primitives.
It assumes to have two variable-length integer representing the uncompressed and the compressed data length
followed by the ZIP-compressed array of bytes. Counterpart of BinaryOutput.writeCompressedByteArray