MEDIUM: backend: add new "balance hash <expr>" algorithm

Almost all of our hash-based LB algorithms are implemented as special
cases of something that can now be achieved using sample expressions,
and some of them have adopted some options to adapt their behavior in
ways that could also be achieved using converters.

There are users who want to hash other parameters that are combined
into variables, and who set headers from these values and use
"balance hdr(name)" for this.

Instead of constantly implementing specific options and having users
hack around when they want a real hash, let's implement a native hash
mode that applies to a standard sample expression. This way, any
fetchable element (including variables) may be used to construct the
hash, even modified by any converter if desired.
diff --git a/src/proxy.c b/src/proxy.c
index 55f4200..0cf3cca 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -154,6 +154,7 @@
 	free(p->cookie_domain);
 	free(p->cookie_attrs);
 	free(p->lbprm.arg_str);
+	release_sample_expr(p->lbprm.expr);
 	free(p->server_state_file_name);
 	free(p->capture_name);
 	istfree(&p->monitor_uri);