jit: Prioritize clobbered regs and discard them on spill

When we're spilling a register, try to find a register that will be clobbered so we can discard it rather than storing.

This does sometimes happen when the reg is dirty, but it's not super common.  Also there is a small edge case: we can't allow a branch to discard a reg that its delay slot clobbers, because we map the branch's regs *after* executing the delay slot.

Anyway, it also brings the spill logic from arm to x86 so they are more consistent.

Unfortunately, I didn't observe any real performance improvement from this in the games I tested.

-[Unknown]