Spark-1230: Enable SparkContext.addJars() to load jars absent from CLASSPATH

This is an up-merge of @pwendell's PR, https://github.com/apache/spark/pull/119,  which was itself an up-merge of my original PR,   https://github.com/apache/incubator-spark/pull/299.

The basic idea is to add a class loader to SparkContext so that jars added via `addJars()` can be made available to the SparkContext driver and its threads as well.  Presently `addJars()` only adds the jars to the executor's classloader.

I have merged in changes and fixed the tests so they should all pass.  I will address comments in subsequent changes.