1.0.37.44: FIND-PACKAGE and FIND-SYMBOL deadlocks
* Instead of linearizing purely on *PACKAGE-LOCK* split the
responsibilities:
1) *PACKAGE-GRAPH-LOCK* is responsible for package->package
links, and package->symbol links.
2) The hash-table lock on *PACKAGE-NAMES* is responsible for
string->package associations. (%NAME and %NICKNAMES slots of
package objects and the hash-table itself.)
This is enough to allow FIND-SYMBOL and FIND-PACKAGE to always
complete in finite time. INTERN, etc, can still block if eg. the
*PACKAGE-GRAPH-LOCK* is held by a thread waiting for the debugger,
etc -- but the reader is at least able to read existing symbols.
* Additionally, in cases where it is easy, signal some errors while
*PACKAGE-GRAPH-LOCK* is not held.