Prevent AddListener from adding the same delegate

We found that ensuring that delegate instances are unique was a good way
to prevent odd, difficult to detect behavior.  This behavior is present
to some extent in BaseSignal, so it seems to make sense to add it to
Signal's implementation as well.