util: Add fd_source_new_full() to set condition & priority
app: Add a socket to communicate with donna from e.g. scripts

On start a socket is created as $XDG_RUNTIME_DIR/donnatella_socket_PID
(where PID is donnatella's process ID).

Messages sent via socket must be the length of the message as string
followed by a colon and the message. For example, to send "FOOBAR" the
message sent shall be "6:FOOBAR"

Messages can either start with a command (nothing to do with donna's
command), then a space and some arguments, or simply be a command.

donna will respond with a message starting with either "OK" or "ERR",
the command, and optionally extra information, separated by spaces.
For example, "ERR FOOBAR Unknown command"

If multiple commands were sent, the first response message will refer to
the first one received/sent, since they're processed in the order they're
received.

Only one command is supported right now (VERSION), which will give
donnatella's version, e.g. respond with "OK VERSION 0.2.0"
app: socket: Add commands TRIGGER and CANCEL

TRIGGER allows to trigger any node, i.e. it gives full power to everything
in donna. The given full location is parsed as expected, so prefixes/aliases
are supported.

On success, an ID is given (e.g. "OK TRIGGER 1") which can then be used
to cancel the task, should one want to.
It will also be used when the task reaches POST_RUN state, as either:
- "DONE <ID>[ <RETURN VALUE>]"
- "CANCELLED <ID>"
- "FAILED <ID>[ <ERROR MESSAGE>]

The return value will be as intref when it was a treeview, node, terminal,
or an array (or nodes or strings).

Scripts should free the intrefs they get once done, we just need to add
a command for that :)
command: Add intref_free()

Scripts getting intrefs from a command should free them when they're
done.
treeview: Fix memory leak

We have a ref on the node when it's in the hashtable. In trees, we
can have the same node as multiple rows, but we only need one ref.
Remove donna_fd_* (Use GLib's own g_unix_fd_*)

Oh look, it already existed! I knew I was missing something, and that
was to look at the UNIX-specific doc page.
app: ask{,_text}: Can be cancelled via fd (e.g. from tasks)

Cancelling a command ask{,_text} wouldn't do anything, now it will.
Add donna-trigger: Helper for scripts

donna-trigger makes it easy to trigger nodes via donna's socket, e.g.
from script.

Since it uses environment variable DONNATELLA_SOCKET (set whenever
executing something from donna) one can simply do in bash e.g:
 ret=$(donna-trigger foobar)
to trigger "foobar" and get the return value/error message in $ret The
return code will indicates if it works or not.
treeview: get_visual(): Return empty string when none

If none are set/available, return an empty string (since it's not an
error)
command: tv_get_visual(): Minor fixes
treeview: Fix visuals not remembered on row removal

The test was reversed during c47179a6 refactoring.
tree: Add commands root_{g,s}et_child_visual

Allows to get/set a tree visual even for a row that either isn't
accessible (an anscendant is collapsed) or not yet loaded (the visual
is "unloaded" for when a row will be added).
Fix provider/command exec not using correct environment

Especially missing e.g. DONNATELLA_SOCKET