Re-design notifications

+ Remove some jank by making only a single notification.  When things
change, simply update the old notification.  The only reason a
cancelNotification() call will ever be needed at this point is to wipe
away the notification