[MAJOR] replaced rbtree with ul2tree.

The rbtree-based wait queue consumes a lot of CPU. Use the ul2tree
instead. Lots of cleanups and code reorganizations made it possible
to reduce the task struct and simplify the code a bit.
diff --git a/src/checks.c b/src/checks.c
index 309d0c4..f9bc5c5 100644
--- a/src/checks.c
+++ b/src/checks.c
@@ -75,7 +75,7 @@
 				sess->srv = NULL; /* it's left to the dispatcher to choose a server */
 				http_flush_cookie_flags(&sess->txn);
 				pendconn_free(pc);
-				task_wakeup(&rq, sess->task);
+				task_wakeup(sess->task);
 				xferred++;
 			}
 		}
@@ -167,7 +167,7 @@
 		}
 	}
  out_wakeup:
-	task_wakeup(&rq, t);
+	task_wakeup(t);
  out_nowake:
 	EV_FD_CLR(fd, DIR_WR);   /* nothing more to write */
 	fdtab[fd].ev &= ~FD_POLL_WR;
@@ -237,7 +237,7 @@
 
  out_wakeup:
 	EV_FD_CLR(fd, DIR_RD);
-	task_wakeup(&rq, t);
+	task_wakeup(t);
 	fdtab[fd].ev &= ~FD_POLL_RD;
 	return 1;
 }
@@ -436,7 +436,7 @@
 						p->sess->srv = s;
 						sess = p->sess;
 						pendconn_free(p);
-						task_wakeup(&rq, sess->task);
+						task_wakeup(sess->task);
 					}
 
 					sprintf(trash,