MEDIUM: mailers: Init alerts during conf parsing and refactor their processing

Email alerts relies on checks to send emails. The link between a mailers section
and a proxy was resolved during the configuration parsing, But initialization was
done when the first alert is triggered. This implied memory allocations and
tasks creations. With this patch, everything is now initialized during the
configuration parsing. So when an alert is triggered, only the memory required
by this alert is dynamically allocated.

Moreover, alerts processing had a flaw. The task handler used to process alerts
to be sent to the same mailer, process_email_alert, was designed to give back
the control to the scheduler when an alert was sent. So there was a delay
between the sending of 2 consecutives alerts (the min of
"proxy->timeout.connect" and "mailer->timeout.mail"). To fix this problem, now,
we try to process as much queued alerts as possible when the task is woken up.
diff --git a/include/proto/checks.h b/include/proto/checks.h
index 853daad..98dca25 100644
--- a/include/proto/checks.h
+++ b/include/proto/checks.h
@@ -24,6 +24,7 @@
 
 #include <types/task.h>
 #include <common/config.h>
+#include <types/mailers.h>
 
 const char *get_check_status_description(short check_status);
 const char *get_check_status_info(short check_status);
@@ -46,6 +47,7 @@
 const char *init_check(struct check *check, int type);
 void free_check(struct check *check);
 
+int init_email_alert(struct mailers *mailers, struct proxy *p, char **err);
 void send_email_alert(struct server *s, int priority, const char *format, ...)
 	__attribute__ ((format(printf, 3, 4)));
 int srv_check_healthcheck_port(struct check *chk);