MAJOR: checks: Use the best mux depending on the protocol for health checks

When a tcp-check connect rule is evaluated, the mux protocol corresponding to
the health-check is chosen. So for TCP based health-checks, the mux-pt is
used. For HTTP based health-checks, the mux-h1 is used. The connection is marked
as private to be sure to not ruse regular HTTP connection for
health-checks. Connections reuse will be evaluated later.

The functions evaluating HTTP send rules and expect rules have been updated to
be HTX compliant. The main change for users is that HTTP health-checks are now
stricter on the HTTP message format. While before, the HTTP formatting and
parsing were minimalist, now messages should be well formatted.
diff --git a/src/connection.c b/src/connection.c
index 42c5b23..e9a68a5 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -46,11 +46,16 @@
 	if (conn_is_back(conn)) {
 		struct server *srv;
 		struct conn_stream *cs = conn->ctx;
+		struct session *sess = conn->owner;
 
 		if (conn->flags & CO_FL_ERROR)
 			goto fail;
 
-		if (conn_install_mux_be(conn, conn->ctx, conn->owner) < 0)
+		if (sess && obj_type(sess->origin) == OBJ_TYPE_CHECK) {
+			if (conn_install_mux_chk(conn, conn->ctx, conn->owner) < 0)
+				goto fail;
+		}
+		else if (conn_install_mux_be(conn, conn->ctx, conn->owner) < 0)
 			goto fail;
 		srv = objt_server(conn->target);
 		if (srv && ((srv->proxy->options & PR_O_REUSE_MASK) != PR_O_REUSE_NEVR) &&