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.
@nhibberd Can you just double check, to make sure this is consistent with the changes you were looking at to ensure everything always gets deleted. The `new Configuration` calls are fairly suspicious - and I am not sure if they will work with the tmp.dir setting?