Feature/file ds

- adds a File dataset interface, also Input/OutputFormatProvider 
- an implementation named FileDataset, including a definition and admin
- Map/reduce runner to support Input/OutputFormatProvider in addition to BatchReadable/Writable
- utilities for scoped runtime arguments ("dataset.<name>.my.property"). 
- unit tests

Please give feedback especially about the APIs. 
So is it the same or different that the runtime argument? Since every sub-class of this class implements `RuntimeContext`, I think it make sense to have sub-class already requires to call super with runtime argument so that the `getRuntimeArguments()` method is implemented in this class.