Added an event propagation trait, for better reuse

This is designed for classes, such as models, which you might want to propagate events (e.g. on save, delete), but you need to control this, and toggle it (e.g. on delete a listener may perform a redirect, you need to turn this off for batch delete, or if delete is being called as part of a wider process).