REORG: listener: move the listener's proto to the receiver

The receiver is the one which depends on the protocol while the listener
relies on the receiver. Let's move the protocol there. Since there's also
a list element to get back to the listener from the proto list, this list
element (proto_list) was moved as well. For now when scanning protos, we
still see listeners which are linked by their rx.proto_list part.
diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index a97cdc3..79b68b4 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -739,7 +739,7 @@
                 setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero));
 #endif
 
-	if (!ext && bind(fd, (struct sockaddr *)&listener->rx.addr, listener->proto->sock_addrlen) == -1) {
+	if (!ext && bind(fd, (struct sockaddr *)&listener->rx.addr, listener->rx.proto->sock_addrlen) == -1) {
 		err |= ERR_RETRYABLE | ERR_ALERT;
 		msg = "cannot bind socket";
 		goto tcp_close_return;
@@ -768,7 +768,7 @@
 	listener->rx.fd = fd;
 	listener->state = LI_LISTEN;
 
-	fd_insert(fd, listener, listener->proto->accept,
+	fd_insert(fd, listener, listener->rx.proto->accept,
 	          thread_mask(listener->bind_conf->settings.bind_thread) & all_threads_mask);
 
 	/* for now, all regularly bound TCP listeners are exportable */
@@ -801,9 +801,9 @@
 	if (listener->state != LI_INIT)
 		return;
 	listener->state = LI_ASSIGNED;
-	listener->proto = &proto_tcpv4;
+	listener->rx.proto = &proto_tcpv4;
 	((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
-	LIST_ADDQ(&proto_tcpv4.listeners, &listener->proto_list);
+	LIST_ADDQ(&proto_tcpv4.listeners, &listener->rx.proto_list);
 	proto_tcpv4.nb_listeners++;
 }
 
@@ -819,9 +819,9 @@
 	if (listener->state != LI_INIT)
 		return;
 	listener->state = LI_ASSIGNED;
-	listener->proto = &proto_tcpv6;
+	listener->rx.proto = &proto_tcpv6;
 	((struct sockaddr_in *)(&listener->rx.addr))->sin_port = htons(port);
-	LIST_ADDQ(&proto_tcpv6.listeners, &listener->proto_list);
+	LIST_ADDQ(&proto_tcpv6.listeners, &listener->rx.proto_list);
 	proto_tcpv6.nb_listeners++;
 }