MAJOR: stream interface: remove the ->release function pointer

Since last commit, we now have a pointer to the applet in the
applet context. So we don't need the si->release function pointer
anymore, it can be extracted from applet->applet.release. At many
places, the ->release function was still tested for real connections
while it is only limited to applets, so most of them were simply
removed. For the remaining valid uses, a new inline function
si_applet_release() was added to simplify the check and the call.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 26e9bfa..507a6d1 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -83,6 +83,22 @@
 	si->appctx.applet = applet;
 }
 
+/* returns a pointer to the applet being run in the SI or NULL if none */
+static inline const struct si_applet *si_applet(struct stream_interface *si)
+{
+	return objt_applet(si->conn->target);
+}
+
+/* call the applet's release function if any. Needs to be called upon close() */
+static inline void si_applet_release(struct stream_interface *si)
+{
+	const struct si_applet *applet;
+
+	applet = si_applet(si);
+	if (applet && applet->release)
+		applet->release(si);
+}
+
 /* Sends a shutr to the connection using the data layer */
 static inline void si_shutr(struct stream_interface *si)
 {