Support alarm()

This patch adds support for Linux's alarm(2) system call.

alarm() is needed in some ancient Unix software, like netperf :(

This implementation is fully compatible with Linux's alarm(), but please
note that what alarm() does when the alarm times out is a kill(SIGALRM) -
so all the caveats mentioned in the previous patch regarding kill(),
will also apply here.

Alarm() is implemented by running one "alarm thread", started on the
first alarm() call. This alarm-thread waits for the alarm to expire,
or for instructions to change the alarm. When an alarm expires the
alarm thread does a kill(0,SIGALRM).

tst-kill.cc (from the previous patch) includes a test to see that
alarm() really sends a SIGALRM signal on time, and also that we can
cancel a pending alarm and not receive a signal.

Signed-off-by: Nadav Har'El <nyh@cloudius-systems.com>