[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/queue.c b/src/queue.c
index 54fd6a3..9b53687 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -62,7 +62,7 @@
 		sess = pendconn_get_next_sess(s, p);
 		if (sess == NULL)
 			break;
-		task_wakeup(&rq, sess->task);
+		task_wakeup(sess->task);
 	}
 
 	return TIME_ETERNITY;