Classpath assembly refactoring

Closes #927

This introduces a new interface `RuntimeClasspathProvider` that needs to be implemented and bound by the runtime in question (YARN, Mesos, ...). It is used by the new class `ClasspathProvider` to form the classpath for the Driver and Evaluator processes. This class is in turn used within the runtimes to assemble the command line to launch those processes.

The interface is implemented for YARN, HDInsight and the local runtime. I tested it on the local runtime.
Merge branch 'master' of github.com:Microsoft-CISL/REEF into weimer_927
Merge pull request #947 from Microsoft-CISL/weimer_927

Classpath assembly refactoring.

No unit test failures on Linux - locally or on YARN. Merging into master.
Dependency upgrades to clean up SLF4J logs

Closes #929

SLF4J binds to a logging framework of choice by putting an adapter for that logging framework onto the classpath.  Turns out that we had several such adapters to Log4J on the class path, all of which are coming from the various hadoop subprojects.

This PR filters out these transitive dependencies. Also, it adds an adapter from SLF4J to the JDK logging library to the classpath of all leaf projects (examples and tests).

Note that adding them to inner projects of the dependency tree (e.g. `reef-common`) would be very bad, as we'd recreate the issue we had with inheriting Hadoop's choices for our consumers.
Merge branch 'weimer_929' of github.com:Microsoft-CISL/REEF
Merge pull request #951 from Microsoft-CISL/weimer_929

Dependency upgrades to clean up SLF4J logs

YARN logs look really nice and consistent now! Merging.
Merge branch 'master' of github.com:Microsoft-CISL/REEF
Merge branch 'master' of https://github.com/Microsoft-CISL/REEF into weimer_763
Merge branch 'weimer_763' of https://github.com/Microsoft-CISL/REEF into weimer_763