Use pread for pack file access instead of loading into memory
Pack files are now opened with Eio.Path.open_in and read via
Bytesrw_eio.pread_reader, which uses kernel pread for random access.
This avoids loading potentially large pack files entirely into memory.