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.

This PR will fix issue #5 

TODO:

- [x] Add event dispatching to `NotificationManager::create()`
- [x] Add event constant class
- [x] Create event class for containing user notification

ping @markwilson