A struct that represents an event that can be sent over the event bus.
The content is user-defined. Besudes the content, the event has an id,
a source id, and a topic id.
A trait that defines a subscriber to the event bus.
Override get_subscribed_topics to return a list of topics the subscriber is interested in.
If the subscriber is interested in all topics, thre si a default implementation that returns None.
Override on_event to handle the event.