Added separate queue for "system" APCs that get called even when the
thread is not in an alertable state.
Specify the select_request timeout as absolute value so that we can
restart the request when interrupted.

diff --git a/server/timer.c b/server/timer.c
index f4b159f..a76ce41 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -78,7 +78,7 @@
 
     /* queue an APC */
     if (timer->thread)
-        thread_queue_apc( timer->thread, &timer->obj, timer->callback, APC_TIMER, 3,
+        thread_queue_apc( timer->thread, &timer->obj, timer->callback, APC_TIMER, 0, 3,
                           (void *)timer->when.tv_sec, (void *)timer->when.tv_usec, timer->arg );
 
     if (timer->period)  /* schedule the next expiration */
@@ -103,7 +103,7 @@
     }
     if (timer->thread)
     {
-        thread_cancel_apc( timer->thread, &timer->obj );
+        thread_cancel_apc( timer->thread, &timer->obj, 0 );
         timer->thread = NULL;
     }
 }