Add API events.
Reconfigure pre/post execute/operation events.
Add custom API event.
Add filters. Provide simpler interface to events.
Add abstract module class.
Merge branch 'events' into develop