Simplify source

* This PR gets rid of the `SourceInterface`, as both our file readers (CsvReader and ExcelReader) need a file, anyway. 
* In addition, the PR reorganizes the source classes to:
  * prevent code duplication 
  * enable lazy loading of file contents.