SI-8495 - Publisher check for removed items before calling

The ‘listeners’ is mutable and items can be removed while iterating on updates. 
Solution is clone the ‘listeners’ and check if still valid before calling

Also updated to include scalatest. (previously no unit tests)