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. 
Well, in guava, you have to do it in functional way, `Maps.transformEntries(Maps.filterEntries())`.

I am ok with the current logic, but maybe it's better to name this method `copyScope` to make it clear it's copy, meaning modifying the returned map won't change the original map.