Make IO tests for Error situations
We need to be able to handle errors in the IO stack more gracefully. This needs some unit tests.
Make a facade IOManager to be able to fake IO errors and then create tests to verify behaviour for scenarios that include:
- Invalid Meta data Page data
- Invalid Mata data Page http request
- Invalid Data chunk data
- Invalid Data chunk http download
- Invalid Meta data Page upload
- Invalid Data chunk upload
- Invalid VolumeDataPage upload
- Invalid VolumeDataPage download
- Invalid TraceHeaders upload
- Invalid TraceHeaders downloads