task-process: Fix output possibly truncated
task-process: Minor fix

We don't always have a stdin open.
task-process: Keep reading stdout/stderr as much as possible

Even after a cancellation. We might not be able to read everything/output
might have been truncated by the cancellation, but let's try to read all
we can.
task: Emit notify signals in current/task's thread

While callback & timeout must always be in the main/UI thread, there's
no reason for such a need when it comes to notify signals. (So far those
are only used by the task manager, to "relay" the change to the node for
the task, if any. All of which can be done in any thread; and if there's
e.g. a treeview showing data (from the node), it will handle switching
to the UI thread as it always does.)

One exception: from is_cancelling() when the task is paused, since we
then own a lock on the task, and need to avoid deadlocks. (Every other
notify is done without owning a lock on the task.)

Also: this could lead to "too many files open" errors if the main thread
got flooded with get_node() tasks (e.g. search results w/ 1000's of results
per second), as even after the task ran and was used, there would remain
some idle sources for notify emission pilling up in the UI thread, all
with a ref on the task (only thing keeping it alive) and a blocking fd
open (leading to lots of eventfd, hence the error).
provider: Minor fix
provider-exec: Add warning if failed to get node (from parsing results)
list: Little optimization

No need to cound every rows in the model when all we need is to know
whether there is at least one row or not. (Speed things up a bit when
there are lots of rows.)
list: Set focus when adding first row

So when adding a row from node-new-child the focus is set/valid.
list: Little optimization

Avoid re-setting the focus when clearing the store by setting it first to
the last row. Else, when on the first row, it would get reset after each
and every row-deleted, which when there are many rows would slow things
down.
list: set_children(): set filling_list to speed things up

In case we are adding lots of rows, sorting & updating status only once
will speed thing up.
list: Optimize adding rows

Inserting rows by prepending (instead of appending) can speed up things
when the list has a few thousand rows (e.g. from 13s to 2s with ~80 000
rows, for the adding part only (i.e. excluding sorting))
list: Don't connect to provider's node-children

This signal is intended for trees to update their maxi-expanded rows
when the list gets the content. It isn't much useful (if ever) for lists,
but would cause slowness since every change of location would trigger a
node-children signal, and therefore the list be updated twice.
(And when there's lots of rows, having to re-sort things might take a few
seconds.)
list: Add FIXME re: toggle column triggering a resort
list: Better handle being flooded w/ node-new-child

That is, in search results when getting lots of results found very
quickly, the UI would get unresponsive as it is flooded by signals and
keeps adding nodes & resorting tree.

Now, until the model has 100 rows we just add right away. After that, we
store them in a temporary array and set up a timeout (1s), to try and let
them pile up.
That way, we can add a bunch of nodes at once and resort the tree only
once, which makes things faster/the UI more responsive.

We also only add a few nodes and process then others events, again to
try & keep the UI as responsive as possible.
treeview: Some optimizations
provider-fs: Better error message when failed to create a node
treeview: GTK 3.12.0 has a fix for bug #710195
ct-perms: Fix sizing of GtkEntry on editing window w/ GTK 3.12

The way GtkEntry (GtkSpinButton) handles its width_chars changed in
GTK 3.12, and we now need to set max_width_chars to get same/proper
results.
terminal: add_tab(): Add param workdir

It is now possible to specify the working directory for the new terminal,
which will allow e.g. some "Open Terminal Here" stuff.
util: Add donna_unquote_string()

Taken from provider-command, and made more generic as it can be useful
elsewhere as well.