messageTray: Replace setButtonSensitive by simply returning the button

We want to remove 'id's from buttons, and simply returning the button actor
is more powerful anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
messageTray: Split out addButton to allow consumers to pass a pre-made button

Some consumers may want to construct their buttons specially, so allow them
to do that by adding a new API that takes a button instead of a label.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
messageTray: Remove useActionIcons feature

This can be put in the legacy notification daemon with the new
addButtonFull API, to create icon names for actions.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
messageTray: Make addButton/addAction take a callback

This is a much simpler API for consumers to manage.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
messageTray: Don't always open the source when clicking on the notification

Some consumers may not always want to open the app, so make clients that
want to do this explicitly connect to the 'clicked' signal.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
notificationDaemon: Move nextNotificationId inside the daemon class

This won't be used by the new notification daemon.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
notificationDaemon: Rename the existing implementation to the FdoNotificationSource

We'll add a new, simpler private implementation that's used by the new
GNotification API in gio.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
notificationDaemon: Implement the new GTK+ notifications API

The new API is designed to support features like persistence and uses
the new org.freedesktop.Application specification for activating
actions on notifications. While we won't add support for persistence
yet, implement the new notification spec with parity of the old one.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
shell-global: Handle empty variants better

In cases where we have an array of 0 elements or similar, the
data returned may be NULL. Since g_file_replace_contents will
assert in this case, simply check for this and delete the file
instead.

https://bugzilla.gnome.org/show_bug.cgi?id=710137
shell-global: Add new APIs for saving/loading persistent state

https://bugzilla.gnome.org/show_bug.cgi?id=710137
messageTray: Remove transient sources

As far as I can tell, the only behavior change of a transient source
is that they auto-destroy after viewing their summary box pointer.
Since all transient sources are only associated with transient
notifications, it seems that we can never get to their summary box
pointer in the first place! Remove support for this.

https://bugzilla.gnome.org/show_bug.cgi?id=710115
messageTray: Remove reNotifyAfterHideNotification logic

When we hide the summary box pointer, we always drop to the tray
instead of the desktop, so this code would simply drop the notification
anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=710115
notificationDaemon: Write notifications out to disk

This allows notifications to persist even after reboots and
gnome-shell restarts.

https://bugzilla.gnome.org/show_bug.cgi?id=710137