[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/include/types/buffers.h b/include/types/buffers.h
index 4afc293..9b781b8 100644
--- a/include/types/buffers.h
+++ b/include/types/buffers.h
@@ -63,9 +63,9 @@
 	struct timeval rex;             /* expiration date for a read  */
 	struct timeval wex;             /* expiration date for a write */
 	struct timeval cex;             /* expiration date for a connect */
-	int rto;                        /* read timeout */
-	int wto;                        /* write timeout */
-	int cto;                        /* connect timeout */
+	struct timeval rto;             /* read timeout */
+	struct timeval wto;             /* write timeout */
+	struct timeval cto;             /* connect timeout */
 	unsigned int l;                 /* data length */
 	char *r, *w, *lr;               /* read ptr, write ptr, last read */
 	char *rlim;                     /* read limit, used for header rewriting */