WaitForClients takes a time.Duration instead of int

It makes sense for timeout to be a Duration.  This also improves the
logic for polling the count to use a ticker as opposed to a crude sleep.
Always build test servers before running tests.

The modified code is usually outside the test files, and therefore make
can't always know when they should be rebuilt.

Also switching from OS X to Linux also causes problems as the
binaries aren't portable.
Make the CloseWaitTimeout configurable
Use CloseWaitTimeout in tests.

This enables us to reduce the delays required to be sure everything's
restarted etc.