MEDIUM: connection: use a generic data-layer init() callback

The generic data-layer init callback is now used after the transport
layer is complete and before calling the data layer recv/send callbacks.

This allows the session to switch from the embryonic session data layer
to the complete stream interface data layer, by making conn_session_complete()
the data layer's init callback.

It sill looks awkwards that the init() callback must be used opon error,
but except by adding yet another one, it does not seem to be mergeable
into another function (eg: it should probably not be merged with ->wake
to avoid unneeded calls during the handshake, though semantically that
would make sense).
diff --git a/include/types/connection.h b/include/types/connection.h
index ddc610e..60caa4d 100644
--- a/include/types/connection.h
+++ b/include/types/connection.h
@@ -86,7 +86,7 @@
 	/* below we have all handshake flags grouped into one */
 	CO_FL_HANDSHAKE     = CO_FL_SI_SEND_PROXY | CO_FL_SSL_WAIT_HS | CO_FL_ACCEPT_PROXY,
 
-	CO_FL_INIT_SESS     = 0x00000800,  /* initialize a session before using data */
+	CO_FL_INIT_DATA     = 0x00000800,  /* initialize the data layer before using it */
 
 	/* when any of these flags is set, polling is defined by socket-layer
 	 * operations, as opposed to data-layer. Transport is explicitly not