MAJOR: filters/http: Rewrite the HTTP compression as a filter

HTTP compression has been rewritten to use the filter API. This is more a PoC
than other thing for now. It allocates memory to work. So, if only for that, it
should be rewritten.

In the mean time, the implementation has been refactored to allow its use with
other filters. However, there are limitations that should be respected:

  - No filter placed after the compression one is allowed to change input data
    (in 'http_data' callback).
  - No filter placed before the compression one is allowed to change forwarded
    data (in 'http_forward_data' callback).

For now, these limitations are informal, so you should be careful when you use
several filters.

About the configuration, 'compression' keywords are still supported and must be
used to configure the HTTP compression behavior. In absence of a 'filter' line
for the compression filter, it is added in the filter chain when the first
compression' line is parsed. This is an easy way to do when you do not use other
filters. But another filter exists, an error is reported so that the user must
explicitly declare the filter.

For example:

  listen tst
      ...
      compression algo gzip
      compression offload
      ...
      filter flt_1
      filter compression
      filter flt_2
      ...
diff --git a/include/types/stream.h b/include/types/stream.h
index 292e36a..d6e05e4 100644
--- a/include/types/stream.h
+++ b/include/types/stream.h
@@ -32,7 +32,6 @@
 #include <common/mini-clist.h>
 
 #include <types/channel.h>
-#include <types/compression.h>
 #include <types/filters.h>
 #include <types/hlua.h>
 #include <types/obj_type.h>
@@ -90,8 +89,7 @@
 
 #define SF_IGNORE_PRST	0x00080000	/* ignore persistence */
 
-#define SF_COMP_READY   0x00100000	/* the compression is initialized */
-#define SF_SRV_REUSED   0x00200000	/* the server-side connection was reused */
+#define SF_SRV_REUSED   0x00100000	/* the server-side connection was reused */
 
 /* some external definitions */
 struct strm_logs {
@@ -158,8 +156,7 @@
 	void (*do_log)(struct stream *s);       /* the function to call in order to log (or NULL) */
 	void (*srv_error)(struct stream *s,     /* the function to call upon unrecoverable server errors (or NULL) */
 			  struct stream_interface *si);
-	struct comp_ctx *comp_ctx;              /* HTTP compression context */
-	struct comp_algo *comp_algo;            /* HTTP compression algorithm if not NULL */
+
 	char *unique_id;                        /* custom unique ID */
 
 	/* These two pointers are used to resume the execution of the rule lists. */