MINOR: listeners: split do_unbind_listener() in two

The inner part now goes into the protocol and is used to decide how to
unbind a given protocol's listener. The existing code which is able to
also unbind the receiver was provided as a default function that we
currently use everywhere. Some complex listeners like QUIC will use this
to decide how to unbind without impacting existing connections, possibly
by setting up other incoming paths for the traffic.
diff --git a/src/proto_udp.c b/src/proto_udp.c
index 8c53c62..1c2477e 100644
--- a/src/proto_udp.c
+++ b/src/proto_udp.c
@@ -60,6 +60,7 @@
 	.listen = udp_bind_listener,
 	.enable = udp_enable_listener,
 	.disable = udp_disable_listener,
+	.unbind = default_unbind_listener,
 	.rx_enable = sock_enable,
 	.rx_disable = sock_disable,
 	.rx_unbind = sock_unbind,
@@ -83,6 +84,7 @@
 	.listen = udp_bind_listener,
 	.enable = udp_enable_listener,
 	.disable = udp_disable_listener,
+	.unbind = default_unbind_listener,
 	.rx_enable = sock_enable,
 	.rx_disable = sock_disable,
 	.rx_unbind = sock_unbind,