Improvement: Concurrent Queue in RunNotifier instead of Old Synchronized ArrayList

The old RunNotifier uses synchronized ArrayList in Listeners.

Without the synchronization the concurrently modified Listeners throw ConcurrentModificationException on iterator.

This synchronization is no longer needed with ConcurrentLinkedQueue because it is already thread safe and non-blocking.

This change will speed up tests because of not having any locks.