* Ports now have a mutex that can be used to implement cooperative
locking of the port. Command loops use this mutex to guarantee that
only one thread at a time uses the port.
* The standard error handler notices when it is about to start a REPL
on a port that is locked by a thread different from the signalling
thread, transforms the error into a derived thread error, and
signals the derived error to the locking thread.
* The procedures KEYBOARD-INTERRUPT-THREAD and
SET-KEYBOARD-INTERRUPT-THREAD! have been eliminated. Keyboard
interrupts are sent to the locking thread of the console I/O port.
* New procedure THREAD-MUTEX-OWNER returns the locking thread of a
mutex, or #F indicating that the mutex is unlocked.
* New procedure WITH-THREAD-MUTEX-LOCKED locks a mutex over a dynamic
extent. If the calling thread already holds the lock, this
procedure does not signal an error and does not unlock the mutex at
the end of the extent.