The naming here seems a bit confusing. There are two types of EventBus one is SparkListenerBus the other is SparkReplayBus. 

The top level trait is basically "Something you can attach listeners to"
There is one implementation that allows you to post() events to it
There is another that reads from a file.

So why not have:
SparkListenerBus (trait)
  ReplayBus extends SparkListenerBus
  PostBus extends SparkListenerBus
  
What do you think @kayousterhout?