MAJOR: remove the stream interface and task management code from sock_*

The socket data layer code must only focus on moving data between a
socket and a buffer. We need a special stream interface handler to
update the stream interface and the file descriptor status.

At the moment the code works but suffers from a race condition caused
by its API : the read/write callbacks still make use of the fd instead
of using the connection. And when a double shutdown is performed, a call
to ->write() after ->read() processed an error results in dereferencing
a NULL fdtab[]->owner. This is only a temporary issue which doesn't need
to be fixed now since this will automatically go away when the functions
change to use the connection instead.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index f36af89..c7ae117 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -34,6 +34,7 @@
 void stream_int_report_error(struct stream_interface *si);
 void stream_int_retnclose(struct stream_interface *si, const struct chunk *msg);
 int conn_si_send_proxy(struct connection *conn, unsigned int flag);
+void stream_sock_update_conn(struct connection *conn);
 
 extern struct sock_ops stream_int_embedded;
 extern struct sock_ops stream_int_task;
diff --git a/include/types/connection.h b/include/types/connection.h
index 6e0b545..2a7a9f5 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -38,6 +38,7 @@
 	CO_FL_WAIT_L4_CONN  = 0x00000002,  /* waiting for L4 to be connected */
 	/* flags below are used for connection handshakes */
 	CO_FL_SI_SEND_PROXY = 0x00000004,  /* send a valid PROXY protocol header */
+	CO_FL_NOTIFY_SI     = 0x00000008,  /* notify stream interface about changes */
 };
 
 /* This structure describes a connection with its methods and data.