reuse listening sockets if address and port match

An unintended side-effect of the upstream change r100999 was that
one Listen command would reuse *all* the existing listeners that had
a matching address and port.

That behavior clashed with our use of multiple identical listeners.
The first Listen command in the configuration one would reuse all
existing listeners.  The other Listen commands would then create
additional listeners, leading to more and more listeners after every
graceful restart.

Commit d94449e7 earlier on this branch disabled the listener
reuse logic in order to work around this proliferation problem.

This commit fixes the listener reuse logic, so that each Listen
command reuses at most one matching listener from the old list.

In consequence, no listeners will be closed or created during a graceful
restart if the new listener configuration matches the current configuration.

In turn this fixes the problem that connections in the listen queue
were getting closed during a graceful restart.
stagger the graceful exit of child processes, conf GracefulExitDelay

With the configuration command GracefulExitDelay set to a short time
such as "100ms", child processes managed by the worker MPM will exit
in a staggered way when they receive the shutdown message through the
Pipe Of Death.

In consequence, during a graceful restart, child processes remain
available for handling incoming requests.  Without this change,
there is a window of time during which requests are queued but
not handled, which delays those requests by several seconds.

On the other side, this introduces a delay in the graceful restart
process.  With "GracefulExitDelay 100ms" and "ServerLimit 32"
a graceful restart will take at least 3.2 seconds.
Merge pull request #1 from fastly/jozef/graceful

graceful restart: reuse listening sockets, stagger child process restarts