Simplify the freedesktop notification widget and fix a race condition

Before, if there was a sequence of events like

1) T1 atomically modifies a message
2) T1 suspends
3) T2 atomically modifies a message
4) T2 suspends
5) T2 wakes up and displays its new message
6) T1 wakes up and displays its new message

The order of the two GUI update events could have been swapped by this
unfortunate schedule.  Instead, each thread now simply sends a wakeup
to a single thread responsible for updating the GUI.  Even if the
wakeups are sent in the wrong order, the GUI update thread is always
checking (atomically) the latest view of the "Current" message.
Before the "current" message was being included in the GUI updates
directly, meaning it could become out of date during a race.