MAJOR: stream-int: only rely on SI_FL_ISBACK to find the requested channel

In order to plan removal of si->ib / si->ob, we now check the side of the
stream interface and find the session, then the requested channel. In
practice it's just an offset applied to the pointer based on the flag.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index aba94c7..cc79e6d 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -49,13 +49,19 @@
 /* returns the channel which receives data from this stream interface (input channel) */
 static inline struct channel *si_ic(struct stream_interface *si)
 {
-	return si->ib;
+	if (si->flags & SI_FL_ISBACK)
+		return &LIST_ELEM(si, struct session *, si[1])->res;
+	else
+		return &LIST_ELEM(si, struct session *, si[0])->req;
 }
 
 /* returns the channel which feeds data to this stream interface (output channel) */
 static inline struct channel *si_oc(struct stream_interface *si)
 {
-	return si->ob;
+	if (si->flags & SI_FL_ISBACK)
+		return &LIST_ELEM(si, struct session *, si[1])->req;
+	else
+		return &LIST_ELEM(si, struct session *, si[0])->res;
 }
 
 /* Initializes all required fields for a new appctx. Note that it does the