[MAJOR] replaced all timeouts with struct timeval

The timeout functions were difficult to manipulate because they were
rounding results to the millisecond. Thus, it was difficult to compare
and to check what expired and what did not. Also, the comparison
functions were heavy with multiplies and divides by 1000. Now, all
timeouts are stored in timevals, reducing the number of operations
for updates and leading to cleaner and more efficient code.
diff --git a/src/backend.c b/src/backend.c
index 69e79d4..002394e 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -1,7 +1,7 @@
 /*
  * Backend variables and functions.
  *
- * Copyright 2000-2006 Willy Tarreau <w@1wt.eu>
+ * Copyright 2000-2007 Willy Tarreau <w@1wt.eu>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -550,8 +550,8 @@
 			s->srv->cur_sess_max = s->srv->cur_sess;
 	}
 
-	if (s->be->contimeout)
-		tv_ms_add(&s->req->cex, &now, s->be->contimeout);
+	if (tv_isset(&s->be->contimeout))
+		tv_add(&s->req->cex, &now, &s->be->contimeout);
 	else
 		tv_eternity(&s->req->cex);
 	return SN_ERR_NONE;  /* connection is OK */
@@ -680,8 +680,8 @@
 
 	case SRV_STATUS_QUEUED:
 		/* FIXME-20060503 : we should use the queue timeout instead */
-		if (t->be->contimeout)
-			tv_ms_add(&t->req->cex, &now, t->be->contimeout);
+		if (tv_isset(&t->be->contimeout))
+			tv_add(&t->req->cex, &now, &t->be->contimeout);
 		else
 			tv_eternity(&t->req->cex);
 		t->srv_state = SV_STIDLE;