Always overwrite the event trap disabled flag

Additional code complexity around the event trap disable state does
not provide any real benefit, and still has some difficult to fix
corner cases to completely guarantee external manipulation can't cause
any issues. As each EventManager instance creates it's own event trap,
so this change makes it clear that the EventManager expects complete
control of it's own event trap.
Make compound event signal name less generic
Unsubscribe event delegates when the EventManager is destroyed

To make this feasible, a consistent interface has been added to
compound and normal event delegates. This allows better impl
hiding from the rest of the EventManager class.
Unsubscribe internal subscriptions when EventManager is destroyed

For the sake of correctness, unsubscribe all internal subscriptions
when cleaning up the EventManager.