Move all the IO functions into functors over the Disk backend

We now have:

  Disk_unix: I/O on a regular unix device
  Disk_dummy: I/O into files in /tmp for testing

Signed-off-by: David Scott <dave.scott@eu.citrix.com>