JIT: optimize single-precision ops based on knowledge of their inputs

If an input is known to be single, we don't have to do the FMUL round thingy on it (JMC is testing to see if this is done right, i.e. doesn't break replays).

If inputs are known to be the output of a non-paired single op, we can do packed ops instead of single ops, then avoid the movddup at the end.

If a value is known to be a safe float that's the output of a floating point arithmetic op and floating point rounding flags haven't been changed in the meantime, we can skip PPC_FP on store.