SPARK-2893: Do not swallow Exceptions when running a custom kryo registrator

The previous behaviour of swallowing ClassNotFound exceptions when running a custom Kryo registrator could lead to difficult to debug problems later on at serialisation / deserialisation time, see SPARK-2878.  Instead it is better to fail fast.

Added test case.
can you change this to

```scala
    // Allow the user to register their own classes by setting spark.kryo.registrator
    for (regCls <- registrator) {
      logDebug("Running user registrator: " + regCls)
      try {
        val reg = Class.forName(regCls, true, classLoader).newInstance()
          .asInstanceOf[KryoRegistrator]
        reg.registerClasses(kryo)
      } catch {
        case e: Exception => 
          throw new SparkException(s"Failed to invoke $regCls", e)
      }
    }
```