Volume management WIP

First pass on volume management API with an initial ZFS implementation.

Note: this is not at all final and not targeting master.  Some interfaces are not yet complete, and some are in fact just documentation indicating the direction they're expected to go.


Yes, it should be a method on the job `Backend`. Something like:

```go
MountVolume(src, dst string, readonly bool)
UnmountVolume(src, dst string)
```

Where `src` is the path on the filesystem to the volume and `dst` is the path inside the container's rootfs? Then the backend would be responsible for setting up the bind mount. This would be for a runtime mount/unmount. For a job start-time mount, and stop-time unmount, we should probably already have the data populated somewhere when we call `Backend.Run`.