Genie:  Save and restore (A5) per thread

Allow for user programs that call InitGraf(), such as a unit test module
for QuickDraw routines.  (Such tests are needed to validate an alternate
implementation; the use case for running the tests natively is verifying
the tests themselves against Mac OS.)

InitGraf() expects A5 to be set up and doesn't modify it.  Since it does
change the value stored at the address A5 points to, i.e. (A5), it needs
to be maintained per thread.  (Arguably, per-process might be preferable
for multithreaded programs, but at the moment, the only affected program
is single-threaded, so we'll keep it simple.)

The code refers to the value at the address A5 points to as an A5 world.
On entry to the user program, A5 has been set up (either by xv68k or Mac
OS), but points to uninitialized memory.  Calling InitGraf() initializes
this memory (the A5 world) to its argument, which is &qd.thePort.  Since
qd.thePort is of type GrafPtr (or GrafPort*), the A5 world (which points
to it) has type GrafPort**, and A5 itself (pointing to the A5 world) has
type GrafPort***.  (This may be overly simplistic, but it works for this
context.)  Further calls to InitGraf() with the same A5 will clobber the
A5 world, so for MacRelix to allow user programs to call InitGraf(), the
A5 world must be saved and restored, as follows:  Save the original from
(A5) sometime after InitGraf() has been called but before any user code;
on thread suspend, save the A5 world to the stack and load the original;
on thread resume, load the saved value from the stack; and finally, load
the original on thread termination.  If a user program calls InitGraf(),
its A5 world will persist through the lifetime of that thread, but won't
affect any other threads.