MAJOR: spoe: Add support of pipelined and asynchronous exchanges with agents

Now, HAProxy and agents can announce the support for "pipelining" and/or "async"
capabilities during the HELLO handshake. For now, HAProxy always announces the
support of both. In addition, in its HELLO frames. HAproxy adds the "engine-id"
key. It is a uniq string that identify a SPOE engine.

The "pipelining" capability is the ability for a peer to decouple NOTIFY and ACK
frames. This is a symmectical capability. To be used, it must be supported by
HAproxy and agents. Unlike HTTP pipelining, the ACK frames can be send in any
order, but always on the same TCP connection used for the corresponding NOTIFY
frame.

The "async" capability is similar to the pipelining, but here any TCP connection
established between HAProxy and the agent can be used to send ACK frames. if an
agent accepts connections from multiple HAProxy, it can use the "engine-id"
value to group TCP connections.
diff --git a/include/types/applet.h b/include/types/applet.h
index 642c793..851948b 100644
--- a/include/types/applet.h
+++ b/include/types/applet.h
@@ -85,10 +85,11 @@
 		} hlua_apphttp;                 /* used by the Lua HTTP services */
 		struct {
 			struct task *task;
-			void        *ctx;
 			void        *agent;
 			unsigned int version;
 			unsigned int max_frame_size;
+			unsigned int flags;
+			struct list  waiting_queue;
 			struct list  list;
 		} spoe;                         /* used by SPOE filter */
 		struct {