[MEDIUM] Create new protected pattern types CONSTSTRING and CONSTDATA to force memcpy if data from protected areas need to be manipulated.

Enhance pattern convs and fetch argument parsing, now fetchs and convs callbacks used typed args.
Add more details on error messages on parsing pattern expression function.
Update existing pattern convs and fetchs to new proto.
Create stick table key type "binary".
Manage Truncation and padding if pattern's fetch-converted result don't match table key size.
diff --git a/include/types/stick_table.h b/include/types/stick_table.h
index 4338e59..b835066 100644
--- a/include/types/stick_table.h
+++ b/include/types/stick_table.h
@@ -37,6 +37,7 @@
 	STKTABLE_TYPE_IP = 0,     /* table key is ipv4 */
 	STKTABLE_TYPE_INTEGER,    /* table key is unsigned 32bit integer */
 	STKTABLE_TYPE_STRING,     /* table key is a null terminated string */
+	STKTABLE_TYPE_BINARY,     /* table key is a buffer of data  */
 	STKTABLE_TYPES            /* Number of types, must always be last */
 };
 
@@ -118,6 +119,8 @@
 	size_t default_size;      /* default key size */
 };
 
+extern struct stktable_type stktable_types[];
+
 /* Sticky session.
  * Any additional data related to the stuck session is installed *before*
  * stksess (with negative offsets). This allows us to run variable-sized
@@ -159,7 +162,7 @@
 union stktable_key_data {
 	struct in_addr ip;        /* used to store an ip key */
 	uint32_t integer;         /* used to store an integer key */
-	char buf[BUFSIZE];        /* used to store a null terminated string key */
+	char buf[BUFSIZE];        /* used to store a null terminated string key or a buffer of data */
 };
 
 /* stick table key */