Event Bubbling

This is a rewrite of event bubbling that I had previously proposed to still use the more modern version of the Observer pattern, but to also be backwards compatible with code using the older method.

Please review and let me know if I missed anything!

Supercedes: #665 
Can fix #625 if Interaction manager uses events instead of callbacks (or in addition, while we deprecate the callbacks).