Make causes semantically identifiable
The current cause vector it is quite hard to use in components because there is no chance to find a certain causing EventId from a semantic name.
Imagine e,g. the case that a component receives an event with two causes (image and sound for instance) and this component needs to look up the respective image cause event in a buffer. Right now there is no chance except iterating over all causes and asking the buffer whether it knows the EventId.
A simple solution would be to add a string tag for each cause. However, I do not know if this is a smart idea or if it is too general. For example, clients then need to know specific string tags. Maybe at least a pre-sorting by the scope of the causing event would be good?