Changed FileTypes from case object to case class
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
Minor refactoring
Merge pull request #1 from ElectricCoffee/more-typesafety

More typesafety