Reduced boilerplate

* Reduced boilerplate by using case classes
* Improved type-safety by forcing the correct file types
* Reduced risk of type-clashing between java.io.File and the File case
class
+ Added DataMovement classes for easier and safer file manipulation
* Updated tests accordingly