demo: Convert GTK demo to new API

Note that the update_buxton idle callback has now been removed to enable
migration to new asynchronous APIs. Currently the demonstration works
in a synchronized fashion, but will soon be ported to use the exposed
file descriptor enabling asynchronous notifications.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
libbuxton: Add poll method

The poll method is to be called by client applications once they are aware
data is available on the socket (via a main loop poll). Once executed, the
call will block and execute all handlers.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
shared: Notify clients when CHANGED is recieved

When we recieve a CHANGED status, we pull the callback from our notify
callbacks map, before dispatching to the relevant callback. Also note
this commit fixes a double-free exposed via notifications.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>
demo: Implement notification support in the GTK client

In the GTK client we now make use of GLib's own poll functionality from
within the main loop, to execute the buxton_client_poll_response only
when we know data is available on the socket.

This allows truly asynchronous notifications, as well as results to
the buxton_client_get_value callback.

Signed-off-by: Michael Ikey Doherty <michael.i.doherty@intel.com>