MINOR: server: add a global list of all known servers

It's a real pain not to have access to the list of all registered servers,
because whenever there is a need to late adjust their configuration, only
those attached to regular proxies are seen, but not the peers, lua, logs
nor DNS.

What this patch does is that new_server() will automatically add the newly
created server to a global list, and it does so as well for the 1 or 2
statically allocated servers created for Lua. This way it will be possible
to iterate over all of them.
diff --git a/src/haproxy.c b/src/haproxy.c
index 7e02e5b..a4d42dc 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -2675,6 +2675,7 @@
 				srvdf->fct(s);
 
 			EXTRA_COUNTERS_FREE(s->extra_counters);
+			LIST_DEL(&s->global_list);
 			free(s);
 			s = s_next;
 		}/* end while(s) */
diff --git a/src/hlua.c b/src/hlua.c
index 52c4295..a093faf 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -48,7 +48,7 @@
 #include <haproxy/proxy-t.h>
 #include <haproxy/regex.h>
 #include <haproxy/sample.h>
-#include <haproxy/server-t.h>
+#include <haproxy/server.h>
 #include <haproxy/session.h>
 #include <haproxy/stats-t.h>
 #include <haproxy/stream.h>
@@ -9179,6 +9179,7 @@
 	socket_tcp.pendconns = EB_ROOT;
 	socket_tcp.idle_conns_tree = NULL;
 	socket_tcp.safe_conns_tree = NULL;
+	LIST_ADD(&servers_list, &socket_tcp.global_list);
 	socket_tcp.next_state = SRV_ST_RUNNING; /* early server setup */
 	socket_tcp.last_change = 0;
 	socket_tcp.conf.file = strdup("HLUA_INTERNAL");
@@ -9226,6 +9227,7 @@
 	socket_ssl.pendconns = EB_ROOT;
 	socket_ssl.idle_conns_tree = NULL;
 	socket_ssl.safe_conns_tree = NULL;
+	LIST_ADD(&servers_list, &socket_ssl.global_list);
 	socket_ssl.next_state = SRV_ST_RUNNING; /* early server setup */
 	socket_ssl.last_change = 0;
 	socket_ssl.conf.file = strdup("HLUA_INTERNAL");
diff --git a/src/server.c b/src/server.c
index db54d3f..dd6340b 100644
--- a/src/server.c
+++ b/src/server.c
@@ -58,6 +58,7 @@
 __decl_thread(HA_SPINLOCK_T idle_conn_srv_lock);
 struct eb_root idle_conn_srv = EB_ROOT;
 struct task *idle_conn_task = NULL;
+struct list servers_list = LIST_HEAD_INIT(servers_list);
 
 /* The server names dictionary */
 struct dict server_key_dict = {
@@ -1736,6 +1737,9 @@
 	srv->socks4_addr              = src->socks4_addr;
 }
 
+/* allocate a server and attach it to the global servers_list. Returns
+ * the server on success, otherwise NULL.
+ */
 struct server *new_server(struct proxy *proxy)
 {
 	struct server *srv;
@@ -1748,6 +1752,7 @@
 	srv->proxy = proxy;
 	MT_LIST_INIT(&srv->actconns);
 	srv->pendconns = EB_ROOT;
+	LIST_ADDQ(&servers_list, &srv->global_list);
 
 	srv->next_state = SRV_ST_RUNNING; /* early server setup */
 	srv->last_change = now.tv_sec;
@@ -1923,6 +1928,7 @@
 #endif
 		free_check(&newsrv->agent);
 		free_check(&newsrv->check);
+		LIST_DEL(&newsrv->global_list);
 	}
 	free(newsrv);
 	return i - srv->tmpl_info.nb_low;