CLEANUP: stream-int: add si_opposite() to find the other stream interface

At a few places we need to find one stream interface from the other one.
Instead of passing via the channel, we simply use the session as an
intermediary, which simply results in applying an offset to the pointer.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 889a855..70b2ac8 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -94,6 +94,15 @@
 		return LIST_ELEM(si, struct session *, si[0])->task;
 }
 
+/* returns the stream interface on the other side. Used during forwarding. */
+static inline struct stream_interface *si_opposite(struct stream_interface *si)
+{
+	if (si->flags & SI_FL_ISBACK)
+		return &LIST_ELEM(si, struct session *, si[1])->si[0];
+	else
+		return &LIST_ELEM(si, struct session *, si[0])->si[1];
+}
+
 /* Initializes all required fields for a new appctx. Note that it does the
  * minimum acceptable initialization for an appctx. This means only the
  * 3 integer states st0, st1, st2 are zeroed.