REORG/MEDIUM: server: split server state and flags in two different variables

Till now, the server's state and flags were all saved as a single bit
field. It causes some difficulties because we'd like to have an enum
for the state and separate flags.

This commit starts by splitting them in two distinct fields. The first
one is srv->state (with its counter-part srv->prev_state) which are now
enums, but which still contain bits (SRV_STF_*).

The flags now lie in their own field (srv->flags).

The function srv_is_usable() was updated to use the enum as input, since
it already used to deal only with the state.

Note that currently, the maintenance mode is still in the state for
simplicity, but it must move as well.
diff --git a/src/lb_fwrr.c b/src/lb_fwrr.c
index f15de23..78be7ff 100644
--- a/src/lb_fwrr.c
+++ b/src/lb_fwrr.c
@@ -49,10 +49,10 @@
 		/* server was already down */
 		goto out_update_backend;
 
-	grp = (srv->state & SRV_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
+	grp = (srv->flags & SRV_F_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
 	grp->next_weight -= srv->prev_eweight;
 
-	if (srv->state & SRV_BACKUP) {
+	if (srv->flags & SRV_F_BACKUP) {
 		p->lbprm.tot_wbck = p->lbprm.fwrr.bck.next_weight;
 		p->srv_bck--;
 
@@ -64,7 +64,7 @@
 			do {
 				srv2 = srv2->next;
 			} while (srv2 &&
-				 !((srv2->state & SRV_BACKUP) &&
+				 !((srv2->flags & SRV_F_BACKUP) &&
 				   srv_is_usable(srv2)));
 			p->lbprm.fbck = srv2;
 		}
@@ -105,10 +105,10 @@
 		/* server was already up */
 		goto out_update_backend;
 
-	grp = (srv->state & SRV_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
+	grp = (srv->flags & SRV_F_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
 	grp->next_weight += srv->eweight;
 
-	if (srv->state & SRV_BACKUP) {
+	if (srv->flags & SRV_F_BACKUP) {
 		p->lbprm.tot_wbck = p->lbprm.fwrr.bck.next_weight;
 		p->srv_bck++;
 
@@ -181,7 +181,7 @@
 		return;
 	}
 
-	grp = (srv->state & SRV_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
+	grp = (srv->flags & SRV_F_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
 	grp->next_weight = grp->next_weight - srv->prev_eweight + srv->eweight;
 
 	p->lbprm.tot_wact = p->lbprm.fwrr.act.next_weight;
@@ -292,7 +292,7 @@
 	for (srv = p->srv; srv; srv = srv->next) {
 		if (!srv_is_usable(srv))
 			continue;
-		fwrr_queue_by_weight((srv->state & SRV_BACKUP) ?
+		fwrr_queue_by_weight((srv->flags & SRV_F_BACKUP) ?
 				p->lbprm.fwrr.bck.init :
 				p->lbprm.fwrr.act.init,
 				srv);
@@ -314,7 +314,7 @@
 	struct proxy *p = s->proxy;
 	struct fwrr_group *grp;
 
-	grp = (s->state & SRV_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
+	grp = (s->flags & SRV_F_BACKUP) ? &p->lbprm.fwrr.bck : &p->lbprm.fwrr.act;
 	
 	/* Delay everything which does not fit into the window and everything
 	 * which does not fit into the theorical new window.
@@ -355,7 +355,7 @@
 /* prepares a server when extracting it from the "next" tree */
 static inline void fwrr_get_srv_next(struct server *s)
 {
-	struct fwrr_group *grp = (s->state & SRV_BACKUP) ?
+	struct fwrr_group *grp = (s->flags & SRV_F_BACKUP) ?
 		&s->proxy->lbprm.fwrr.bck :
 		&s->proxy->lbprm.fwrr.act;
 
@@ -365,7 +365,7 @@
 /* prepares a server when it was marked down */
 static inline void fwrr_get_srv_down(struct server *s)
 {
-	struct fwrr_group *grp = (s->state & SRV_BACKUP) ?
+	struct fwrr_group *grp = (s->flags & SRV_F_BACKUP) ?
 		&s->proxy->lbprm.fwrr.bck :
 		&s->proxy->lbprm.fwrr.act;
 
@@ -376,7 +376,7 @@
 static void fwrr_get_srv(struct server *s)
 {
 	struct proxy *p = s->proxy;
-	struct fwrr_group *grp = (s->state & SRV_BACKUP) ?
+	struct fwrr_group *grp = (s->flags & SRV_F_BACKUP) ?
 		&p->lbprm.fwrr.bck :
 		&p->lbprm.fwrr.act;