Several changes to the Genera implementation:
Update the locking functions to match the specification. Replace the implementation of
recursive locks with one that actually works. (The prior implementation would fail horribly if
RELEASE-RECURSIVE-LOCK wasn't called in the exact reverse order across all threads.) And,
implement the :TIMEOUT key to WITH-RECURSIVE-LOCK-HELD but only if the value is NIL or 0.
With these changes to locking, add the TIMEOUT keyword to CONDITION-WAIT. Genera now passes
the new tests in the test suite for CONDITION-WAIT with timeout and all the semaphore tests.
Implement the proper semantics for JOIN-THREAD by storing the thread's return value in a spare
slot of the SI:PROCESS object.
Add a native implementation of WITH-TIMEOUT.