CLEANUP: connection: split sock_ops into data_ops, app_cp and si_ops

Some parts of the sock_ops structure were only used by the stream
interface and have been moved into si_ops. Some of them were callbacks
to the stream interface from the connection and have been moved into
app_cp as they're the application seen from the connection (later,
health-checks will need to use them). The rest has moved to data_ops.

Normally at this point the connection could live without knowing about
stream interfaces at all.
diff --git a/include/types/peers.h b/include/types/peers.h
index 9e33d6d..0b1a74c 100644
--- a/include/types/peers.h
+++ b/include/types/peers.h
@@ -74,7 +74,7 @@
 	time_t last_change;
 	struct sockaddr_storage addr;  /* peer address */
 	struct protocol *proto;	       /* peer address protocol */
-	struct sock_ops *sock;         /* peer socket operations */
+	struct data_ops *data;         /* peer socket operations at data layer */
 	void *sock_init_arg;           /* socket operations's opaque init argument if needed */
 	struct peer *next;	  /* next peer in the list */
 };