WIP Refactor notification handling for clarity and stability

NotificationGroup and PersonalNotification are now real types,
responsible for managing themselves, instead of by-value data types.
NotificationManager now maintains a list of NotificationGroup and
handles contact resolution, creating notifications, and adding and
removing them from groups.

It should now be much easier to follow the logic for an actual
notification or group without worrying about subtle behaviors caused by
storing a bunch of values in a QMultiMap and hoping you call the right
functions to update the right things at the right time.

WIP: the serialization of notifications for persistence is
currently disabled.

WIP: Voicemail is currently mostly broken, but it was anyway.

WIP: May have some bad behavior changes in regards to multiple messages
received in less than banner timeout

WIP: Notifications received during inbox observed show banner but do not
time out as they used to