Refactor configuration class

Current configuration is based on system properties. This results in a long command line string,  hard to customize and change dynamically.

This pull adds a new configuration class using configuration file, the same way as Hadoop has with its core-site.xml. 

For compatibility, both system property and xml configurations are supported. The overwrite order is system > file. This is also inspired by what SPARK does (thanks to Haoyuan's pointer).