[MEDIUM] move connection establishment from backend to the SI.

The connection establishment was completely handled by backend.c which
normally just handles LB algos. Since it's purely TCP, it must move to
proto_tcp.c. Also, instead of calling it directly, we now call it via
the stream interface, which will later help us unify session handling.
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index f97aa62..7789323 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -72,6 +72,9 @@
 
 #define SI_FL_CAP_SPLICE (SI_FL_CAP_SPLTCP)
 
+struct server;
+struct proxy;
+
 struct stream_interface {
 	unsigned int state;     /* SI_ST* */
 	unsigned int prev_state;/* SI_ST*, copy of previous state */
@@ -79,6 +82,8 @@
 	int fd;                 /* file descriptor for a stream driver when known */
 	unsigned int flags;
 	unsigned int exp;       /* wake up time for connect, queue, turn-around, ... */
+	int (*connect)(struct stream_interface *, struct proxy *, struct server *,
+		       struct sockaddr *, struct sockaddr *); /* connect function if any */
 	void (*shutr)(struct stream_interface *);  /* shutr function */
 	void (*shutw)(struct stream_interface *);  /* shutw function */
 	void (*chk_rcv)(struct stream_interface *);/* chk_rcv function */