Added stageId <--> jobId mapping in DAGScheduler
  ...and make sure that DAGScheduler data structures are cleaned up on job completion.
  Initial effort and discussion at https://github.com/mesos/spark/pull/842

Conflicts:
	core/src/main/scala/org/apache/spark/MapOutputTracker.scala
	core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
	core/src/test/scala/org/apache/spark/scheduler/DAGSchedulerSuite.scala
Fixed intended side-effects
Removed redundant residual re: reverted refactoring.
Improved comment
Refactoring to make job removal, stage removal, task cancellation clearer
Cleaned up job cancellation handling
Tightly couple stageIdToJobIds and jobIdToStageIds
Local jobs post SparkListenerJobEnd, and DAGScheduler data structure
cleanup always occurs before any posting of SparkListenerJobEnd.

Conflicts:
	core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
Synchronous, inline cleanup after runLocally

Conflicts:
	core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
SparkListenerJobStart posted from local jobs