Bug fix in SignalSource. The signal might be lost when disposing the event hander at time of triggering the signal. Now an immutable list is used to store the list of handlers, which guarantees that all handlers will be invoked when triggering the signal.