[MINOR] add the "ignore-persist" option to conditionally ignore persistence

This is used to disable persistence depending on some conditions (for
example using an ACL matching static files or a specific User-Agent).
You can see it as a complement to "force-persist".

In the configuration file, the force-persist/ignore-persist declaration
order define the rules priority.

Used with the "appsesion" keyword, it can also help reducing memory usage,
as the session won't be hashed the persistence is ignored.

diff --git a/include/types/proto_http.h b/include/types/proto_http.h
index f5410fa..7890cb2 100644
--- a/include/types/proto_http.h
+++ b/include/types/proto_http.h
@@ -221,6 +221,13 @@
 	REDIRECT_TYPE_PREFIX,           /* prefix redirect */
 };
 
+/* Perist types (force-persist, ignore-persist) */
+enum {
+	PERSIST_TYPE_NONE = 0,          /* no persistence */
+	PERSIST_TYPE_FORCE,             /* force-persist */
+	PERSIST_TYPE_IGNORE,            /* ignore-persist */
+};
+
 /* Known HTTP methods */
 typedef enum {
 	HTTP_METH_NONE = 0,
diff --git a/include/types/proxy.h b/include/types/proxy.h
index fb34513..3ac80d8 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -176,7 +176,7 @@
 	struct list block_cond;                 /* early blocking conditions (chained) */
 	struct list redirect_rules;             /* content redirecting rules (chained) */
 	struct list switching_rules;            /* content switching rules (chained) */
-	struct list force_persist_rules;        /* 'force-persist' rules (chained) */
+	struct list persist_rules;		/* 'force-persist' and 'ignore-persist' rules (chained) */
 	struct list sticking_rules;             /* content sticking rules (chained) */
 	struct list storersp_rules;             /* content store response rules (chained) */
 	struct {                                /* TCP request processing */
@@ -307,9 +307,10 @@
 	} be;
 };
 
-struct force_persist_rule {
+struct persist_rule {
 	struct list list;			/* list linked to from the proxy */
 	struct acl_cond *cond;			/* acl condition to meet */
+	int type;
 };
 
 struct sticking_rule {
diff --git a/include/types/session.h b/include/types/session.h
index 94bb5d5..daf2619 100644
--- a/include/types/session.h
+++ b/include/types/session.h
@@ -81,6 +81,8 @@
 #define	SN_FINST_SHIFT	16		/* bit shift */
 /* unused:              0x00080000 */
 
+#define SN_IGNORE_PRST	0x00100000	/* ignore persistence */
+
 /* WARNING: if new fields are added, they must be initialized in event_accept()
  * and freed in session_free() !
  */