Reads into an existing List<int> from the file. If start is present,
the bytes will be filled into buffer from at index start, otherwise
index 0. If end is present, the end - start bytes will be read into
buffer, otherwise up to buffer.length. If end == start nothing
happens.
Returns a Future<int> that completes with the number of bytes read.
Future<int> readInto(List<int> buffer, [int start = 0, int end]);