feat(api): complete domain event publishing with aggregate root pattern
- Add getUncommittedEvents() and commit() to AggregateRoot base class
- Create 6 new domain events: SubscriptionExpired, SubscriptionRenewed,
ListingStatusChanged, UserKycUpdated, UserDeactivated, PaymentRefunded
- Wire events into entity state changes: SubscriptionEntity (markExpired,
renewPeriod), ListingEntity (all transitions), UserEntity (KYC, deactivate),
PaymentEntity (markRefunded)
- Add 7 new event listeners across notifications, admin, and search modules
(25 total @OnEvent handlers)
- Fix ReviewDeletedListener to handle LISTING target type
- Restore watcher notifications in ListingSoldListener
- Update barrel exports and module registrations
Resolves: TEC-1564
Co-Authored-By: Paperclip <noreply@paperclip.ing>