Implement addJar(), add addFile().

This just piggybacks on the Spark implementation; due to the SparkContext
being remote, the semantics of the URLs change a bit, but everything should
work if people avoid "file:" URLs.

Most of the changes are for the newly added tests.