With new storeClientCopy() scheme, the client side might re-request
some data which has already been read from disk (if it didn't get
the full HTTP headers). That means we need to put lseek() back
in; ugh. New fde->disk.offset tracks the current file offset.
Fixed the 'double-read' bug found by Alex Rousskov. Always
make the read callback after each read() call. Don't wait
for the read buffer to full or for EOF.
This means dread_ctrl->offset isn't needed as it was being used
because there will only be one read() per dread_ctrl. ->offset
now becomes the offset requested from the store module, and we
seek if dread_ctrl->offset != fde->disk.offset.