Minor refactoring
Added the RDD.dependenciesUpdated method

This method will be used by the EventReplayer to manipulate the RDD DAG for debugging purposes.  A natural transformation trait (the "~>" arrow) is used to update RDD dependencies.

CartesianRDD, MappedRDD and ZippedRDD are first updated to try out this new API.  All RDD classes need to be updated later.
Added elementwise assertion support for the replay debugger
Test case refactoring: replaced try/catch block with intercept[T]
Removed SparkListenerRDDCreation event

In the original design of Arthur, RDD creation event is reported by all RDD instances at the end of their constructor.  The drawback of this approach is that no RDD class can be ever inherited.  Otherwise, once the sub class is instantiated, there would be two RDD creation events reported, one for the sub class, one for the super class.

Further more, in the original design, RDDs that are parents of other RDDs are serialized multiple times because once an RDD is serialized, their dependencies are serialized together.

This commit removed the RDD creation event.  Instead, RDDs are collected from the ActiveJob object reported together with the SparkListenerJobStart event.  It means that, RDD are not recored into the event log if no related job is started.
When local jobs should also report the SparkListenerJobStart event