Update error handling so we get a ReadErrorException when trying to get the data of a failed VolumeDataRequest
Added an overload of IsCanceled() that can write to a ReadErrorException object, use this one for propagating errors through the VolumeDataRequest class so you get an exception if you call Data() (or get the data property in Python) on a VolumeDataRequest that has had an error. Added a python test to verify that a ReadErrorException is thrown when trying to access the data property of a failed VolumeDataRequest.