MEDIUM: connections/mux: Revamp the send direction.

Totally nuke the "send" method, instead, the upper layer decides when it's
time to send data, and if it's not possible, uses the new subscribe() method
to be called when it can send data again.
diff --git a/include/proto/connection.h b/include/proto/connection.h
index 16103b7..a2580f1 100644
--- a/include/proto/connection.h
+++ b/include/proto/connection.h
@@ -598,6 +598,7 @@
 {
 	cs->obj_type = OBJ_TYPE_CS;
 	cs->flags = CS_FL_NONE;
+	LIST_INIT(&cs->wait_list.list);
 	LIST_INIT(&cs->send_wait_list);
 	cs->conn = conn;
 }
@@ -663,6 +664,8 @@
 /* Releases a conn_stream previously allocated by cs_new() */
 static inline void cs_free(struct conn_stream *cs)
 {
+	if (cs->wait_list.task)
+		tasklet_free(cs->wait_list.task);
 	pool_free(pool_head_connstream, cs);
 }
 
@@ -681,6 +684,11 @@
 	if (!likely(cs))
 		return NULL;
 
+	cs->wait_list.task = tasklet_new();
+	if (!likely(cs->wait_list.task)) {
+		cs_free(cs);
+		return NULL;
+	}
 	if (!conn) {
 		conn = conn_new();
 		if (!likely(conn)) {