Moved some code from Ivory to list/read/write/delete files from locations

I created a `LocationIO` object having the necessary configurations to do IO operations, extracted from the `IvoryLocation` object in Ivory.
We have been avoiding `ThrownExpectations` unless it is really needed. It can be removed in this case I think?