#14 split the file-related methods from TableOperations into a separate FileIO class. The new class is serializable so that it can be sent to other JVMs where tasks run. The Spark integration needs to be updated to send a FileIO instance and use it when opening data files.