* The outbox-implementation it kept separated from the application:
the application sends a normal ApplicationEvent - everything else
is implemented in a separate package, that could be packaged and
distributed separatedly
* Created a new table outbox
* Added the event-type OutboxEvent, which is captured in the outbox
* UserEvent is now a subclass of OutboxEvent
* Added an OutboxListener that transactionally captures the events