MAJOR: session: detach the connections from the stream interfaces

We will need to be able to switch server connections on a session and
to keep idle connections. In order to achieve this, the preliminary
requirement is that the connections can survive the session and be
detached from them.

Right now they're still allocated at exactly the same place, so when
there is a session, there are always 2 connections. We could soon
improve on this by allocating the outgoing connection only during a
connect().

This current patch touches a lot of code and intentionally does not
change any functionnality. Performance tests show no regression (even
a very minor improvement). The doc has not yet been updated.
diff --git a/include/proto/connection.h b/include/proto/connection.h
index 52b547c..4c9e610 100644
--- a/include/proto/connection.h
+++ b/include/proto/connection.h
@@ -23,9 +23,15 @@
 #define _PROTO_CONNECTION_H
 
 #include <common/config.h>
+#include <common/memory.h>
 #include <types/connection.h>
 #include <types/listener.h>
 
+extern struct pool_head *pool2_connection;
+
+/* perform minimal intializations, report 0 in case of error, 1 if OK. */
+int init_connection();
+
 /* I/O callback for fd-based connections. It calls the read/write handlers
  * provided by the connection's sock_ops. Returns 0.
  */