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.