Use new MAP-RESTARTS in FIND-RESTART, COMPUTE-RESTARTS; fix FIND-RESTART
* Both FIND-RESTART and COMPUTE-RESTARTS traverse, filter and select
active restarts, potentially for a particular condition and
potentially calling restart test functions. This common behavior has
been factored into the new function MAP-RESTARTS.
* Remove *CONDITION-RESTARTS*; use new slot ASSOCIATED-CONDITIONS in
RESTART structure instead.
* As stated in bug 774410, when given a RESTART instance, FIND-RESTART
did not test whether the restart was still active and whether the
restart had been associated to a different condition in the
meantime. This behavior has been changed by calling MAP-RESTARTS which
checks activity and association to conditions (sadly, making
(find-restart RESTART-INSTANCE CONDITION-OBJECT)
a bit slower than before).
* INVOKE-RESTART is also affected by the changes for bug
774410. However, it does not respect restart test functions when
called with a RESTART instance (This is underspecified in CLHS and
other implementations behave in various ways. However, behaving
differently would make some restarts un-invokable).
* As suggested in bug 769615, (find-restart SYMBOL ...) now calls
MAP-RESTARTS instead of COMPUTE-RESTARTS, consing less and executing
faster in many cases.
* New (find-restart :recheck-conditions-and-tests :bug-774410) test from
Jean-Philippe Paradis from original bug report in
tests/condition.impure.lisp checks the new behavior.
Fixes lp#769615, lp#774410