Abstract events for regions and blacklists further.
Reorganize classes into different packages.
Clean up docs / code for utility classes.
Improve level of event listening.
Add abstracted event debugging listener.
Simplfy Cause objects.
Merge branch 'feature/event-abstraction' into feature/region-api-update