constructor(buffer) {
    if (!(buffer instanceof Uint8Array)) {
      throw new TypeError(`Not a byte array: ${buffer}`)
    }
    this.buf = buffer
    this.offset = 0
  }
Counterpart to Encoder. Wraps a Uint8Array buffer with a cursor indicating
the current decoding position, and allows values to be incrementally read by
decoding the bytes at the current position.