Signal fix

Signals now return listener references, instead of listener indeces.
This fixes a stupid bug where, when a listener is removed, all the other
listeners IDs after it are now out of date. (How did I not notice that
before?)