Don't accidentally clobber t0 in uaccess code

Previously, the "jump" assembly pseudoinstruction was used for both tail
calls and far intra-function jumps.  But "jump" may clobber a t-register,
which is inappropriate for the latter case.  The old "jump" was renamed
to "tail," which is now used for tail calls.  Now, "jump" takes a second
argument, which is the scratch register it may clobber.  This form is used
for far intra-function jumps.

This commit requires an updated compiler.
Use memory constraints instead of memory clobbers

The benefit is twofold.  First, using "m"(x) instead of "r"(&x) allows
the compiler to use displacement addressing instead of just register
indirect, which can remove an ADDI.  Second, the memory clobber is a
heavy hammer that forces reloading unrelated variables from memory.