MEDIUM: connections: Change struct wait_list to wait_event.

When subscribing, we don't need to provide a list element, only the h2 mux
needs it. So instead, Add a list element to struct h2s, and use it when a
list is needed.
This forces us to use the unsubscribe method, since we can't just unsubscribe
by using LIST_DEL anymore.
This patch is larger than it should be because it includes some renaming.
diff --git a/include/types/checks.h b/include/types/checks.h
index d148e3b..e0a4bd6 100644
--- a/include/types/checks.h
+++ b/include/types/checks.h
@@ -184,7 +184,7 @@
 	char **envp;				/* the environment to use if running a process-based check */
 	struct pid_list *curpid;		/* entry in pid_list used for current process-based test, or -1 if not in test */
 	struct sockaddr_storage addr;   	/* the address to check */
-	struct wait_list wait_list;            /* Waiting for I/O events */
+	struct wait_event wait_list;            /* Waiting for I/O events */
 	char *sni;				/* Server name */
 };
 
diff --git a/include/types/connection.h b/include/types/connection.h
index 26f9bed..20daa43 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -50,9 +50,8 @@
 	SUB_CAN_RECV        = 0x00000002,  /* Schedule the tasklet when we can recv more */
 };
 
-struct wait_list {
+struct wait_event {
 	struct tasklet *task;
-	struct list list;
 	void *handle;           /* To be used by the callee */
 	int wait_reason;
 };
@@ -404,9 +403,8 @@
 	enum obj_type *target;        /* the target to connect to (server, proxy, applet, ...) */
 
 	/* second cache line */
-	struct list send_wait_list;   /* list of tasks to wake when we're ready to send */
-	struct list recv_wait_list;          /* list of tasks to wake when we're ready to recv */
-	struct list sendrecv_wait_list;      /* list of tasks to wake when we're ready to either send or recv */
+	struct wait_event *send_wait; /* Task to wake when we're ready to send */
+	struct wait_event *recv_wait; /* Task to wake when we're ready to recv */
 	struct list list;             /* attach point to various connection lists (idle, ...) */
 	int xprt_st;                  /* transport layer state, initialized to zero */
 	int tmp_early_data;           /* 1st byte of early data, if any */
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index eae1926..76ed72e 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -101,7 +101,7 @@
 	unsigned int err_type;  /* first error detected, one of SI_ET_* */
 	int conn_retries;	/* number of connect retries left */
 	unsigned int hcto;      /* half-closed timeout (0 = unset) */
-	struct wait_list wait_list; /* We're in a wait list */
+	struct wait_event wait_event; /* We're in a wait list */
 };
 
 /* operations available on a stream-interface */