Change Volume UUID.

I'm not sure that passing in `Volume`s here is sensible. The original sketch passed in a `Volume` and a uuid, but both implementations wanted access to the mutated `Volume` of the target. They could have created one to use internally, but that would be a layering violation, I think.

Another option would be to refactor both implementations of `IStoragePool` to act on `(name, uuid)` pairs instead of volumes. But I think this only makes sense if the entire interface is designed to work this way. I think the best solution long term is to change `IStoragePool` to work on `dataset` names and not care about volumes names or uuids. Then `IStoragePool.change_owner` would just become `IStoragePool.rename`.