MEDIUM: connections: Don't directly mess with the polling from the upper layers.

Avoid using conn_xprt_want_send/recv, and totally nuke cs_want_send/recv,
from the upper layers. The polling is now directly handled by the connection
layer, it is activated on subscribe(), and unactivated once we got the event
and we woke the related task.
diff --git a/src/connection.c b/src/connection.c
index b62ccce..5022772 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -134,6 +134,7 @@
 			conn->send_wait = NULL;
 		} else
 			io_available = 1;
+		__conn_xprt_stop_send(conn);
 	}
 
 	/* The data transfer starts here and stops on error and handshakes. Note
@@ -153,6 +154,7 @@
 			conn->recv_wait = NULL;
 		} else
 			io_available = 1;
+		__conn_xprt_stop_recv(conn);
 	}
 
 	/* It may happen during the data phase that a handshake is
@@ -341,6 +343,7 @@
 			conn->recv_wait = NULL;
 			sw->wait_reason &= ~SUB_CAN_RECV;
 		}
+		__conn_xprt_stop_recv(conn);
 	}
 	if (event_type & SUB_CAN_SEND) {
 		sw = param;
@@ -348,7 +351,9 @@
 			conn->send_wait = NULL;
 			sw->wait_reason &= ~SUB_CAN_SEND;
 		}
+		__conn_xprt_stop_send(conn);
 	}
+	conn_update_xprt_polling(conn);
 	return 0;
 }
 
@@ -363,6 +368,7 @@
 			conn->recv_wait = sw;
 		}
 		event_type &= ~SUB_CAN_RECV;
+		__conn_xprt_want_recv(conn);
 	}
 	if (event_type & SUB_CAN_SEND) {
 		sw = param;
@@ -371,9 +377,11 @@
 			conn->send_wait = sw;
 		}
 		event_type &= ~SUB_CAN_SEND;
+		__conn_xprt_want_send(conn);
 	}
 	if (event_type != 0)
 		return (-1);
+	conn_update_xprt_polling(conn);
 	return 0;
 }
 
@@ -603,6 +611,7 @@
 			}
 			line++;
 		}
+		__conn_xprt_stop_recv(conn);
 
 		if (!dst_s || !sport_s || !dport_s)
 			goto bad_header;