smoketest: Allow passing server binary as command line argument

Helpful for running servers through eatmydata, gdb, etc.
[scripts] Fix Sandbox.rsh(bg=False)
[smoketest] Initialize first server's log over ssh

This allows for placing the storage directory outside of a shared
filesystem
[ConditionVariable] Fix wait_until again

This regression was introduced in fc4d35e: "Fix 100% CPU and wedges with
gcc 4.8". Waiting until TimePoint::min() should return immediately but
did not after that commit.

This time around I added unit tests for the entire ConditionVariable
class, so I think it's right now :)
Add scripts/hookmatrix.sh

This script runs the pre-commit hooks with a bunch of different
configurations. This makes it easier to test against multiple compilers,
debug and release versions, etc.