Adds `reproduce_threading_report.sh` to run the WeaselDB server and
load tester configuration described in `threading_performance_report.md`.
Improvements over the original draft:
- Validates the build directory, config file, and required binaries
before starting, and expects to be run from the project root.
- Wraps server shutdown and log printing in an EXIT/INT/TERM trap
so the server is always cleaned up, even if the script is
interrupted or the load tester fails.
- Makes the `ulimit -n` increase best-effort instead of fatal.
- Uses the existing `DURATION` variable consistently in the load
tester invocation.
- Adds a final check that the unix socket was created before
launching the load tester.
- Uses 2 connect threads on the client, which is sufficient for
establishing 2000 connections over the 30-second run.