Read methods to copy data into external byte[] sinks.

nit: byteCount could be out of bounds. Maybe move the checkOffsetAndCount call into internalRead() ? In which case you can rename `internalRead()` to just `read()`.