Readonly mounts - fixes 93

Fixes #93.

Depends on #598; tests should pass once #602 is merged and this branch is merged forward.
> Is this to catch cases where the target system doesn't have zfs installed?

Mostly, yes (this happened on my Debian machine).  Or perhaps if you somehow configure your `PATH` strangely.

> Wouldn't we be better to have an upfront check for this? 

I'd still probably leave the exception handling and logging, though, in case some other surprising thing happens.  Since we hopefully won't keep this code indefinitely (libzfs_core for the win!) maybe it's not worth polishing it much more.

> And if I try to use this function but mistype the subcommand name,isn't it going to be difficult to debug?

Probably.  The alternative is to try to actually understand certain errors from the zfs command which I'm not super interested in (for the same reason as above).  I think we might just say "read the log file to be sure you've seen all errors".  This is already the case to some extent (`twisted.python.log.err` in a trial-run unit test might only appear in the log file; as long as we have proper eliot->twisted.python.log integration then `trial -e` mostly mitigates this).