[project @ 2001-08-01 12:07:50 by simonmar]
Signification cleanup & rewrite of CmLink.
Fixes at least one bug: the PersistentLinkerState could sometimes get
out of step with the RTS's idea of which modules were loaded, leading
to an unloadObj failure when we try to unload the same module twice.
This could happen if a ^C exception is received in the middle of a
:load.
Fixed by keeping the part of the linker's state that must match up
with the RTS's internal state entirely private to CmLink, stored in a
global variable. The operations in CmLink which manipulate this state
are now wrapped by Exception.block, and so are safe from ^C
exceptions.