This also might be nice to take out of the SparkUI and make a utility function associated with a ReplayBus. For instance the ReplayBus could have an associated object and that has a utility function like:
```
object ReplayBus {
  def replayFromPersistentStorage(logDir: String, bus: ReplayBus)
}
```
The concept of replay is sort of distinct from the UI and might be useful for other listener implementations.