MAJOR: applet: now call si_applet_done() instead of si_update() in I/O handlers

The applet I/O handlers now rely on si_applet_done() which itself decides
to wake up or sleep the appctx. Now it becomes critical that applte handlers
properly call this on every exit path so that the appctx is removed from the
active list after I/O have been handled. One such call was added to the Lua
socket handler. It used to work without it probably because the main task is
woken up by the parent task but now it's needed.
diff --git a/src/peers.c b/src/peers.c
index 2a927e0..97a8728 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -1038,17 +1038,16 @@
 				si_shutw(si);
 				si_shutr(si);
 				si_ic(si)->flags |= CF_READ_NULL;
-				goto quit;
+				goto out;
 			}
 		}
 	}
 out:
-	si_update(si);
+	si_applet_done(si);
 	si_oc(si)->flags |= CF_READ_DONTWAIT;
 	/* we don't want to expire timeouts while we're processing requests */
 	si_ic(si)->rex = TICK_ETERNITY;
 	si_oc(si)->wex = TICK_ETERNITY;
-quit:
 	return;
 full:
 	si->flags |= SI_FL_WAIT_ROOM;