[MEDIUM] add support for binding to source port ranges during connect

Some users are already hitting the 64k source port limit when
connecting to servers. The system usually maintains a list of
unused source ports, regardless of the source IP they're bound
to. So in order to go beyond the 64k concurrent connections, we
have to manage the source ip:port lists ourselves.

The solution consists in assigning a source port range to each
server and use a free port in that range when connecting to that
server, either for a proxied connection or for a health check.
The port must then be put back into the server's range when the
connection is closed.

This mechanism is used only when a port range is specified on
a server. It makes it possible to reach 64k connections per
server, possibly all from the same IP address. Right now it
should be more than enough even for huge deployments.
diff --git a/src/fd.c b/src/fd.c
index 3d7071c..9dd365a 100644
--- a/src/fd.c
+++ b/src/fd.c
@@ -19,6 +19,7 @@
 #include <common/config.h>
 
 #include <proto/fd.h>
+#include <proto/port_range.h>
 
 struct fdtab *fdtab = NULL;     /* array of all the file descriptors */
 int maxfd;                      /* # of the highest fd + 1 */
@@ -36,6 +37,8 @@
 void fd_delete(int fd)
 {
 	EV_FD_CLO(fd);
+	port_range_release_port(fdtab[fd].port_range, fdtab[fd].local_port);
+	fdtab[fd].port_range = NULL;
 	close(fd);
 	fdtab[fd].state = FD_STCLOSE;