MEDIUM: proto_tcp: add support for tracking L7 information

Until now it was only possible to use track-sc1/sc2 with "src" which
is the IPv4 source address. Now we can use track-sc1/sc2 with any fetch
as well as any transformation type. It works just like the "stick"
directive.

Samples are automatically converted to the correct types for the table.

Only "tcp-request content" rules may use L7 information, and such information
must already be present when the tracking is set up. For example it becomes
possible to track the IP address passed in the X-Forwarded-For header.

HTTP request processing now also considers tracking from backend rules
because we want to be able to update the counters even when the request
was already parsed and tracked.

Some more controls need to be performed (eg: samples do not distinguish
between L4 and L6).
diff --git a/include/types/session.h b/include/types/session.h
index e0d3c22..4688dbf 100644
--- a/include/types/session.h
+++ b/include/types/session.h
@@ -166,7 +166,7 @@
 
 /* parameters to configure tracked counters */
 struct track_ctr_prm {
-	int type;				/* type of the key */
+	struct sample_expr *expr;		/* expression used as the key */
 	union {
 		struct stktable *t;		/* a pointer to the table */
 		char *n;			/* or its name during parsing. */