[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/stream_sock.c b/src/stream_sock.c
index 2a7275b..77eda02 100644
--- a/src/stream_sock.c
+++ b/src/stream_sock.c
@@ -156,7 +156,7 @@
 		else
 			tv_eternity(&b->rex);
 	
-		task_wakeup(&rq, fdtab[fd].owner);
+		task_wakeup(fdtab[fd].owner);
 	}
 
 	fdtab[fd].ev &= ~FD_POLL_RD;
@@ -291,7 +291,7 @@
 		}
 	}
 
-	task_wakeup(&rq, fdtab[fd].owner);
+	task_wakeup(fdtab[fd].owner);
 	fdtab[fd].ev &= ~FD_POLL_WR;
 	return retval;
 }