Track attached events

You can now detach the listener with the detach() function, as per
ListenerAggregateInterface.
Signed-off-by: Michael Gooden <michael@bluepointweb.com>