Add DonnaPattern for patterns w/ many types

Now when doing string matching we have a common interface with a few extra
features.

The string can start with one of the following to specify which mode to use:

- a double quote (") for pattern mode
- a single quote (') for search mode
- a caret (^) for begin with mode
- a dollar sign ($) for end with mode
- a tilde sign (~) for case-insensitive match
- an equal sign (=) for case-sensitive match
- a greather than sign (>) for regex mode

If none are used, it'll be search mode unless at least one wildchar ('*' or '?')
was used, then it is pattern mode.

Additionally, if the string first starts with a pipre (|) then other pipes are
used as separators so more than one "pattern" can be specified.
Use DonnaPattern where we only had glob-like patterns

That is for arrangements and filtering via ct name & text.

Note that, for ct-name filtering, there is a break of compatibility: it
supported specifying multiple patterns separated via pipe signs. Now this is
still supported, but requires an extra pipe as prefix to enable it.

(Also means pipe signs can now be used as part of a pattern.)
list: Fix possible critical warning on multiple refreshes

If e.g. holding F5 for a bit to trigger multiple refreshes, we could be
cancelling a get_children_task that hadn't yet started, in which case
it was set CANCELLED right away and therefore had its callback run right
away as well.

That would clear priv->get_children_task, which we then tried to use (to
unref it). (So it was also causing a memory leak.)
list: Don't show error for cancelled get_children tasks
list: If task isn't current get_children_task, do nothing

The timeout & callback for a task that isn't the get_children_task
anymore shouldn't do anything. This can happen if it's been cancelled or
replaced with another task.
list: Fix reload possibly not doing anything

We created the task and... forgot to run it!
task: Fix possible double-free

When cancelling a task that had never been started (i.e. going from STOPPED
or WAITING to CANCELLED directly) the task had never ran, but its callback
was still called.

As a result, on finalize we would wrongly free callback_data. Make sure
to set flag task_ran in order not to free it.
filter: Accessing filter should be done in main/UI thread
filter/ct-s: Update the API re: filter compilation

Now a DonnaFilter can be compiled ahead of time, via compile() which
allows to catch any potential (syntax) error. In order to do so,
columntype-s now have a refresh_filter_data() that can be used to set
their filter data.
The match (now done via renamed is_filter_match()) doesn't take the
(string) filter, only the filter_data.

Back in filter, when is_match() is called, is the filter isn't compiled
then it is done automatically. If it fails, a warning is emitted (as
there's no more GError) and it returns FALSE.
list: Add visual filters (commands tv_{g,s}et_visual_filter)
treeview: status: Add %f for name of focused row
treeview: status: Add %F (current VF) and colors

%F for the current VF. One can use an extra to have it used instead of
the actual filter.

Option key_modes_colors is renammed to colors and switch from boolean to
(the new extra) tree-st-colors. If can be off, keys, or vf; In the later
case, options {fore,back}ground{,-rgba} are then used when a VF is applied.
context: Must escape '\' and '}' to use in extra

This not only allows the use of '}' within an extra, but therefore allows
for context to support other string to be contextually parsed as extra,
which can as well include variables w/ extras.
treeview: status: Add %h/%H for nb/size of hidden
treeview: status: "avhsF" now support an extra w/ recursion

An extra can be specified for all those variables, which will be used:

- %F: when a VF is set
- others: the extra is splitted using commas as separators (use %, for
  literal commas), then what is shown is based on how many string were
  specified (up to 3):
With only 1 string, it will be shown unless the reference (i.e. the number
of items the variable refers to) is zero.
With 2 strings, nothing is shown if the reference is zero, the first one
is shown if it is one, else the second one is shown.
Lastly, with 3 strings, the first one is shown is reference is zero, the
second one if it's one, else the last one is shown.

And %a doesn't show nothing/first of 3 strings when it is zero, but when
it is the same as %v (i.e. all rows are visible)
conf: Update statusbar re: latest change

Show how many rows are selected/total; How many are hidden. In blue when
a VF is set.
config: doc: Fix wrong function name
list: set_visual_filter(): Add param toggle

If TRUE, resetting the same VF will turn it off instead.
command: tv_set_visual_filter(): Treat empty filter as if unspecified

Allows to use e.g. a command's return value as filter, where nothing
means unset current VF.
command: config_set_{boolean,int,string}: Return set value