Switch to storing multiple images in a single pack file
Use a shared cache so we aren't opening/closing file descriptors to the same file repeatedly (only it won't actually close as the images' memory map will implicitly keep the file descriptors open)