Event cause system

For discussion only

https://github.com/SpoutDev/SpoutAPI/pull/486