[MAJOR] make stream sockets aware of the stream interface

As of now, a stream socket does not directly wake up the task
but it does contact the stream interface which itself knows the
task. This allows us to perform a few cleanups upon errors and
shutdowns, which reduces the number of calls to data_update()
from 8 per session to 2 per session, and make all the functions
called in the process_session() loop completely swappable.

Some improvements are required. We need to provide a shutw()
function on stream interfaces so that one side which closes
its read part on an empty buffer can propagate the close to
the remote side.
diff --git a/src/client.c b/src/client.c
index 1f577d1..ef1ee09 100644
--- a/src/client.c
+++ b/src/client.c
@@ -173,12 +173,14 @@
 		s->si[0].state = SI_ST_EST;
 		s->si[0].err_type = SI_ET_NONE;
 		s->si[0].err_loc = NULL;
+		s->si[0].owner = t;
 		s->si[0].fd = cfd;
 		s->cli_fd = cfd;
 
 		s->si[1].state = SI_ST_INI;
 		s->si[1].err_type = SI_ET_NONE;
 		s->si[1].err_loc = NULL;
+		s->si[1].owner = t;
 		s->si[1].fd = -1; /* just to help with debugging */
 
 		s->srv = s->prev_srv = s->srv_conn = NULL;
@@ -373,7 +375,7 @@
 		t->expire = TICK_ETERNITY;
 
 		fd_insert(cfd);
-		fdtab[cfd].owner = t;
+		fdtab[cfd].owner = &s->si[0];
 		fdtab[cfd].listener = l;
 		fdtab[cfd].state = FD_STREADY;
 		fdtab[cfd].cb[DIR_RD].f = l->proto->read;