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.
This is my first time dealing with Akka, so let me know if I'm missing something, but I went this route because the BlockManagerMasterActor needs to receive the event, and nobody is able to get a direct reference to it.  It's only accessible through an ActorRef.  My understanding of the Actor pattern is that Actors should only be communicated with via messages.