readVarLong method
Reads a 8 byte variable length long starting at readPosition.
The format of this long will be as to LEB128, or better what
Minecraft uses.
Returns a Pair, in which the first integer is the read value
and the second the length of the var-integer in bytes.
Implementation
Pair<int, int> readVarLong({bool signed = false}) {
  var index = readPosition;
  var value = 0;
  for (var i = 0; i < 64; i += 7) {
    final byte = readByteData!.getUint8(index++);
    value |= (0x7F & byte) << i;
    if (0x80 & byte == 0) break;
  }
  var length = index - readPosition;
  readPosition = index;
  if (signed) {
    final rem = value % 2;
    return Pair(rem == 0 ? value ~/ 2 : (value ~/ -2) - 1, length);
  } else {
    return Pair(value, length);
  }
}