model/notification: Extracted events table

The notification table had a lot of duplicated data before. It makes more
sense to have a list of things that happened (events) and a separate
list of notifications about these things and their status (read/not read).