Jit memory access cleanup + VFPU

Well, this does three things.

One is properly supporting "ignore invalid memory access" being off in jit (minor performance penalty, only when option is off.)

It also fixes logging on an immediate bad address (although, that should never happen, I don't want to not know if it does...)

The other is, I decided it was time to refactor.  Turned out more complicated and automagical than I was initially planning, though.  Hmm.  It significantly simplifies safe memory implementation, though.

A read now looks like this:
```
		JitSafeMem safe(this, rs, offset);
		OpArg src;
		if (safe.PrepareRead(src, safeFunc))
			(this->*mov)(32, bits, gpr.RX(rt), src);
		if (safe.PrepareSlowRead(safeFunc))
			(this->*mov)(32, bits, gpr.RX(rt), R(EAX));
		safe.WriteFinish();
```

But it emits all sorts of code for you so it's far less to the metal than before (even transparently handling direct immediate address access.)  I'll still need to adjust it for VFPU, but it shouldn't be too bad.

Is there a cleaner way?  Also, should I instead move it outside Jit into a separate file?  Wasn't sure... it's very coupled.

-[Unknown]