0.8.21.23: rewritten SUB-GC & finalization
* last vestiges of before GC hooks have been removed.
* after GC hooks are now left for user-code.
* call UNSAFE-CLEAR-ROOTS before GC proper as the moral replacement
of old before GC hooks for internal use only: on unithread SBCL
scrub the stack and clear ctype-of cache, on threaded just scrub the
stack.
* finalizers and after GC hooks moved outside the GC proper, with
interrupts enabled and all threads[1] running; it is now safe to
allocate in them as re-entry to GC is possible.
* put a lock on the global finalizers list, as per Gabor Mellis'
patch. Gratuitiously change the name of the selfsame global variable
to flush out anyone diddling with it.
* tighten the finalizer spec with a note that they may run in any
thread.
* add a stress-test for finalizers.
[1. Not actually tested on threaded SBCL.]