Fix to VFPU register allocation. Fixes #7174

GetFreeXRegs(_,_,true) invalidates registers it can see on spill,
but it can't see all the registers in the array due to how we call it
so we have to invalidate the rest ourselves.  Not doing so can get it
to use the same register twice.

I also have a relevant auto-test if there's any interest.  It is transcribed directly from a game though.