Properly set md.attached after a call to MDDevice.Attach.

This lets you interact with the object once it's been attached;
previously you would get an error suggesting otherwise.
Fix MDDev.Detach to not return 'invalid argument' errors.

Apparently the ABI requires you to pass in a fairly clean md_ioctl
struct (only md_unit set -- optionally, md_options with MD_FORCE).
Anything else causes 'invalid argument' to be returned.
Add in all the mount flags from mount(2).
NULL-terminate iovec values passed to nmount.

Apparently it's required -- they're not just buffer+length. This fixes
yet another 'invalid argument' error.
Change Jail.Exec to return an exec.Cmd rather than an os.Process.

API BREAKAGE.

os.Process doesn't provide a meaningful way to check the process state,
nor does it give an abstraction for interacting with STDIN/STDOUT. This
doesn't give a means to interact either (since the command is started
without setting `.Stdin`/`.Stdout` beforehand -- so they're bound to
`/dev/null`). The API will likely change again in the future to fix
this.

`jail.Jail.Exec` should be considered exceptionally unstable, even
moreso since it relies on a working `jexec` binary (since fork+exec is
... possibly not safe).