MAJOR: stream: use a regular ->update for all stream interfaces

Now si->update() is used to update any type of stream interface, whether
it's an applet, a connection or even nothing. We don't call si_applet_call()
anymore at the end of the resync and we don't have the risk that the
stream's task is reinserted into the run queue, which makes the code
a bit simpler.

The stream_int_update_applet() function was simplified to ensure that
it remained compatible with this standardized calling convention. It
was almost copy-pasted from the update code dedicated to connections.
Just like for si_applet_done(), it seems that it should be possible to
merge the two functions except that it would require some slow operations,
except maybe if the type of end point is tested inside the update function
itself.
diff --git a/src/stream.c b/src/stream.c
index ed97e48..15c5538 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -2262,10 +2262,10 @@
 		if ((sess->fe->options & PR_O_CONTSTATS) && (s->flags & SF_BE_ASSIGNED))
 			stream_process_counters(s);
 
-		if (si_f->state == SI_ST_EST && obj_type(si_f->end) != OBJ_TYPE_APPCTX)
+		if (si_f->state == SI_ST_EST)
 			si_update(si_f);
 
-		if (si_b->state == SI_ST_EST && obj_type(si_b->end) != OBJ_TYPE_APPCTX)
+		if (si_b->state == SI_ST_EST)
 			si_update(si_b);
 
 		req->flags &= ~(CF_READ_NULL|CF_READ_PARTIAL|CF_WRITE_NULL|CF_WRITE_PARTIAL|CF_READ_ATTACHED);
@@ -2289,23 +2289,6 @@
 			req->rex = TICK_ETERNITY;
 		}
 
-		/* When any of the stream interfaces is attached to an applet,
-		 * we have to call it here. Note that this one may wake the
-		 * task up again. If at least one applet was called, the current
-		 * task might have been woken up, in which case we don't want it
-		 * to be requeued to the wait queue but rather to the run queue
-		 * to run ASAP. The bitwise "or" in the condition ensures that
-		 * both functions are always called and that we wake up if at
-		 * least one did something.
-		 */
-		if ((si_applet_call(si_b) | si_applet_call(si_f)) != 0) {
-			if (task_in_rq(t)) {
-				t->expire = TICK_ETERNITY;
-				stream_release_buffers(s);
-				return t;
-			}
-		}
-
 	update_exp_and_leave:
 		t->expire = tick_first(tick_first(req->rex, req->wex),
 				       tick_first(res->rex, res->wex));