SPARK-2099. Report progress while task is running.

This is a sketch of a patch that allows the UI to show metrics for tasks that have not yet completed.  It adds a heartbeat every 2 seconds from the executors to the driver, reporting metrics for all of the executor's tasks. 

It still needs unit tests, polish, and cluster testing, but I wanted to put it up to get feedback on the approach.
it might make sense to just make this really high (e.g. 10 minutes). This is going to a local actor so it shouldn't take long in the normal case. If you happen to hit a GC pause though it could trigger this. So I'd just make it high and say that it's very high to avoid a potential GC pause.