For locking and transaction tests, we need an external process to probe the
tdb. This code was a mess, and unreliable (occasional failures). Rewrite
it so that instead of blocking and using SIGALRM, we mug fcntl and force
non-blocking locks. We use a special return to day "I couldn't because
the lock wasn't available".
I also made the operations clearer and more orthogonal rather than "what
we needed for each test" which was really hard to understand.
It turns out those occasional failures weren't spurious. Next patch!