[SPARK-2878]: Fix custom spark.kryo.registrator

This is a work-in-progress, and I'm looking for feedback on my current approach.  My aim here is to add the user jars specified in SparkConf into the Executor processes before they start any tasks, and to add these jars to the class path of all threads.

So far I have just implemented sending the user jars to the Executor processes before registering the executor with the master.  Next steps are to add these jars to all threads, and/or share a pool of kryo instances created with a known class loader.  This will also need implementing for Mesos & YARN.
Good point.  Also, even with the above code, `userJarClassPathEntries` will be before the output of `bin/compute-classpath.sh` (see buildJavaOpts in CommandUtils.scala).  At present, appDesc.command.classPathEntries really comes from spark.executor.extraClassPath.

What should be the order for the two values of spark.files.userClassPathFirst?

If false, should it be `[<results of bin/compute-classpath.sh>, spark.executor.extraClassPath, userJars]`? (Note that this is different to the present behaviour where compute-classpath.sh comes after spark.executor.extraClassPath).  An alternative here would be [spark.executor.extraClassPath, <results of bin/compute-classpath.sh>, userJars]?

If true, should it be [userJars, spark.extraClassPath, <results of bin/compute-classpath.sh>]?