ini: fix block name bundary
implement event-driven scheduler

This tremendous diff constitutes a major refactoring of the scheduler.

Setup an interval timer to trigger a SIGALRM instead of sleeping, which
is way more accurate (being woken up can cause a delay).

Provide only real-time signals (SIGRTMIN+1 to SIGRTMAX) to the user to
trigger block update, as they are numerous (31 in Linux), prioritized,
and queueable. This means that multiple instances of the same signal can
be queued, and the user can manage block priorities: the real-time
signal with the lowest value will be handled first. Thus, deprecate and
ignore SIGUSR1 and SIGUSR2.

Fix click parsing, by interpreting as many lines as possible when
receiving a SIGIO (I/O possible signal for stdin).

Refine the definition of a block, and separate its execution (triggering
a SIGCHLD on termination) and its update (previously using popen(3)),
which allows commands to be asynchronous.

As the whole application is event-driven, the scheduler now blocks all
signals we are interested in and synchronously waits for them. This
allows to get rid of signal handlers, catch pending signals and execute
the corresponding action.

Refs #23 #34