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.