SPARK-1124: Fix infinite retries of reduce stage when a map stage failed

In the previous code, if you had a failing map stage and then tried to
run reduce stages on it repeatedly, the first reduce stage would fail
correctly, but the later ones would mistakenly believe that all map
outputs are available and start failing infinitely with fetch failures
from "null".

Conflicts:
	core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
Fix removal from shuffleToMapStage to search for a key-value pair with
our stage instead of using our shuffleID.