MINOR: protocol: add a default I/O callback and put it into the receiver

For now we're still using the protocol's default accept() function as
the I/O callback registered by the receiver into the poller. While
this is usable for most TCP connections where a listener is needed,
this is not suitable for UDP where a different handler is needed.

Let's make this configurable in the receiver just like the upper layer
is configurable for listeners. In order to ease stream protocols
handling, the protocols will now provide a default I/O callback
which will be preset into the receivers upon allocation so that
almost none of them has to deal with it.
diff --git a/src/listener.c b/src/listener.c
index baf1844..1cad1bb 100644
--- a/src/listener.c
+++ b/src/listener.c
@@ -588,7 +588,8 @@
 /* creates one or multiple listeners for bind_conf <bc> on sockaddr <ss> on port
  * range <portl> to <porth>, and possibly attached to fd <fd> (or -1 for auto
  * allocation). The address family is taken from ss->ss_family, and the protocol
- * passed in <proto> must be usable on this family. The number of jobs and
+ * passed in <proto> must be usable on this family. The protocol's default iocb
+ * is automatically preset as the receivers' iocb. The number of jobs and
  * listeners is automatically increased by the number of listeners created. It
  * returns non-zero on success, zero on error with the error message set in <err>.
  */
@@ -610,6 +611,7 @@
 		l->bind_conf = bc;
 		l->rx.settings = &bc->settings;
 		l->rx.owner = l;
+		l->rx.iocb = proto->default_iocb;
 		l->rx.fd = fd;
 		memcpy(&l->rx.addr, ss, sizeof(*ss));
 		MT_LIST_INIT(&l->wait_queue);