common/admin_socket: use POSIX timer for delayed signal delivery
AdminSocketRaise.AsyncReschedule was flaking on arm64:
[ RUN ] AdminSocketRaise.AsyncReschedule
/ceph/src/test/admin_socket.cc:497: Failure
Expected equality of these values:
0
sig2.count.load()
Which is: 1
[ FAILED ] AdminSocketRaise.AsyncReschedule (1045 ms)
The old approach forked a child that polled the clock and called
kill() at the deadline. The problem is: the deadline was computed
before fork(), so any fork latency ate directly into the timing
budget. On a busy arm64 host that 50 ms margin just wasn't enough.
The fix is to let the kernel own the timer via timer_create(). No
child process, no polling, no fork overhead, and SIGCONT still works.