[SPARK-2571] Correctly report shuffle read metrics.

Currently, shuffle read metrics are incorrectly reported when stages have multiple shuffle dependencies (they are set to be the metrics from just one of the shuffle dependencies, rather than the accumulated metrics from all of the shuffle dependencies).  This fixes that problem, and should probably be back-ported to the 0.9 branch.

Thanks @ryanra for discovering this problem!

cc @rxin @andrewor14
I was trying to force people to use updateShuffleReadMetrics() rather than directly updating shuffleReadMetrics to avoid accidentally overwriting existing values...happy to do this in a different way though if you think something else would be better / more readable.