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.
I would really prefer not to have this SelfType, we are trying to move away from using the constructors as types in Ivory, and I don't think it even helps for this Location data-type, because we have types to represent the individual options anyway (FilePath/Path/S3Pattern).