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.  Anyway, it may still help us choose better registers even if it isn't dirty.

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]