Replace the thread inside `SparkListenerBus` with an Akka actor

Threads are precious resources so that we shouldn't abuse them