[WIP] SPARK-2450 Adds exeuctor log links to Web UI

Creates a general way to add log links to the executor
page in the web UI.

This is achieved by:

1) Adding two new spark listener events: onExecutorAdded and onExecutorRemoved(this is only for symmetry). The events carry some executor information including log url locations.

2) Utilizing environment variables to pass the log urls to the executor backend. The prefix is: SPARK_LOG_URL_

Since each cluster manager exposes logs in different ways, we use the environment variable prefix as described above to prevent us from subclassing the CoarseGrainedExecutorBacked.

This is a work in progress and as such, there are minimal unit tests. In addition log urls are only propagated for yarn-client and yarn-cluster mode. With minimal work, adding log url propagation for standalone mode is also possible.
BTW doesn't this break the build? There are a few listeners in Spark code itself (e.g. `EventLoggingListener`) which should have broken because of this.

(BTW fixing that listener means you'll probably need to touch `JsonProtocol` to serialize these new events to the event log... and you'll need to be careful not to keep the log URLs in the replayed UIs since they'll most probably be broken links at that point. Meaning that probably the UI listener should nuke the log URLs when the "executor removed" message is handled.)