[SPARK-4859][Streaming] Improve StreamingListenerBus

* Fix the race condition of `queueFullErrorMessageLogged`.
* Log the error from listener rather than crashing `listenerThread`.
This looks like a good change to me, especially since we already use this error-handling strategy in [SparkListenerBus](https://github.com/apache/spark/blob/master/core/src/main/scala/org/apache/spark/scheduler/SparkListenerBus.scala) (added in #759).