Event framework in place and tested working
Inspired by Bukkit's Event-handling system