1.0.41.13: gc: Fix interrupt context scavenging of interior pointers.
* Some registers, such as reg_LIP and the program counter, posess
the "interior pointer" nature, meaning that they are unboxed
registers that contain untagged pointers into heap space, relative
to some actual boxed ("pair") register.
* The program counter is advertised as always being relative to
reg_CODE, but this is easily disproven. The "npc" register on
platforms with branch-delay slots is the same, as is the link
register on PPC.
* Rather than coming up with clever rules for which interior
pointer registers can refer to which pairs at which times, doing
object length tests for validity, and so on, just deal with all of
the interior pointer registers (plausibly up to five on any given
platform, though in practice three or four) as general interior
pointers.
* Rather than dealing with massive code duplication for the
various interior pointer registers, come up with a clever macro
system to paper over the worst of the repetition.
* Only pair interior-pointers to pointer values, never fixnums
or other-immediates.
* Use the untagged "native pointer" value of a pair register
when computing the interior-pointer offset, preventing failure
to pair when the interior-pointer is to within the first two
words of the object.