[SPARK-4857] [CORE] Adds Executor membership events to SparkListener

Adds onExecutorAdded and onExecutorRemoved events to the
SparkListener. This will allow a client to get notified when an
executor has been added/removed and provide additional information
such as how many vcores it is consuming.

In addition, this commit adds a SparkListenerAdapter to the
Java API that provides default implementations to the SparkListener.
This is to get around the fact that default implementations for
traits don't work in Java. Having Java clients extend
SparkListenerAdapter moving forward will prevent breakage in java
when we add new events to SparkListener.