Updates to job submission and launch on YARN clusters

This PR mostly deals with an issue in `YarnConfigurationConstructor` where the configuration wouldn't be searched properly. However, it also contains the following updates:

  * JobJarMaker no longer tries to overwrite files that exist twice on the classpath. Instead, it will print a message into FINEST and ignore the second file with the same name.
  * LaunchClass now provides more elaborate error checking
  * Updated the classpath assembly to allow for a prefix to the classpath to be provided by the runtime. This is helpful to make sure that e.g. the local YARN configuration is always first in the classpath
  * Added new class `HadoopEnvironment` to provide constants for the names of the various Hadoop environment variables.
  * Simplified `YarnConfigurationConstructor` to rely on the classpath to find the configuration
  * `YarnClasspathProvider` now uses the `YarnConfiguration` to assemble the classpath instead of relying on environment variables
  * `HelloReefYarn` now only adds its own JAR file to the Driver classpath, assuming that everything else is already on the Driver. This assumes that we run via `yarn jar reef-examples-?-shaded.jar com.microsoft.reef.examples.hello.HelloReefYarn`
isn't that too loose? I mean, it will match words like "conference" and "fetch". I understand that  the probability of having those in the classpath is very low, but nevertheless.. we should probably check if "etc" and "conf" are at least surrounded by path delimiters, i.e. do a regexp match for something like `(?:^|[/\\\\])(?:conf|etc)(?:[/\\\\]|$)`