wip: asynchronous commands and click fix

* sched: synchronously wait for signals

Block all signals we are interested in and use sigwaitinfo() to pause.

This allows to catch signals received before waiting for them (we can
fetch a pending signal with sigwaitinfo() even while that signal is
blocked), as well as getting rid of setting up a signal handler.

Note that children inherit the parent signal mask, so forking commands
(such as mpstat) won't work without unblocking signals first.

* sched: setup an interval timer

Initializing a simple interval timer to send SIGALRM at each X seconds
is way more accurate that relying on alarm() or sleep().

* provide only real-time signals to the user

Real-time signals are prioritized, and queueable: this means that
multiple instances of the same signal can be queued, and the user can
manage priorities for blocks: the real-time signal with the lowest value
will be handled first.

Note: Linux disposes of 32 real-time signals.

For now, deprecate and ignore the usage of SIGUSR1 and SIGUSR2.

* fix click parsing