Use generation numbers for fetch failure tracking

Conflicts:
	core/src/main/scala/spark/scheduler/DAGScheduler.scala
Force generation increment after shuffle map stage
Extra debugging from hostLost()
Add tests of various node failure scenarios.
Remove dead code in test.
Clarify TODO.
Remove more dead code from test.
Call slaveLost on executor death for standalone clusters.
Remember ConnectionManagerId used to initiate SendingConnections.

This prevents ConnectionManager from getting confused if a machine
has multiple host names and the one getHostName() finds happens
not to be the one that was passed from, e.g., the BlockManagerMaster.
Fix compilation due to previous cherry-pick