Catch low-level unix errors from seek/read/write and wrap in `Error

This avoids low-level errors bubbling up and leaking through the
error handling code in the layer above.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>