Improve error handling
- Make VolumeDataRequest::GetErrorCode()/GetErrorMessage() wait for the request to complete (if it hasn't done so already) so they can return sensible values.
- Turn the 'inconsistent metadata' case back into an error. It looks like it was changed by accident when the logging interface was added.
- Update tests to check that the expected errors are logged and can be picked up through the VolumeDataRequest object.