Cleanup traits notification refactor

Address two remaining issue @burnpack raised regarding the Traits notifiers refactoring:
* Re-raising exceptions from a traits exception handler was broken in Python 3
* In some corner cases, the listener might have disappeared during the notification process; we now make sure that we either hold a valid reference to the listener through the process, or quit the notification