VDI.revert pull request + extra bits

This is @johnelse's #1963 plus

- `xe vdi-revert`
- SMAPIv1 plumbing: `VDI_REVERT` and `vdi_revert`, using the `VDI.clone` code as a fallback