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>
write should return Is_read_only if the fd is read-only

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Unknown errors: include the filename as well as the offset/length

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Merge pull request #3 from djs55/improve-error-handling

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