[WIP] Event dispatching and persistence on Notifications

This PR aims to add event dispatching logic to Notifications. It also aims to provide persistence functionality, so that new notifications can be persisted to data stores for retrieval by users later.

TODO:

- [ ] Decide on strategy for persisting notifications
- [ ] Decide on strategy for dispatching events
- [x] Create event class for containing user notification

ping @markwilson