Introduces a compatibility breakage in emit(), and all callbacks receive an event object rather than a hash of key/value pairs.
Roles are all about static composition, and events are for dynamic composition. Roles that emit() events blur this distinction, so I'm deeming them to be "bad". Additionally, one of Reflex's prime directives is for consumers to decide how they'll handle things. Implementing "interface" callbacks in roles (even default ones) takes this away from the consumer. The current solution is to provide declarative helpers to define the defaults. They also make more explicit that it's the consumer's role (har) to define callbacks in all cases. This is slightly less convenient, but it's a lot cleaner. Also add vim format lines so I stop dealing with whitespace inconsistencies.
It's shorter, and it aligns the names of things with what node.js people understand.
…nted out that the code's not self-explanatory.
"emits" is a shortcut for Reflex::Trait::EmitsOnChange. "observes" is a shortcut for Reflex::Trait::Observed. Names and locations may change.
… to Reflex::Base.