WIP JIT: Carry optimizations!

***DON'T PUSH THIS PR PLEASE, COMEX***

This PR depends on changes made in my integer optimizations PR, so until that's pushed, this will contain those in addition to the ones to be reviewed (the last 4 commits here). Please only look at those last 4!

These commits basically:

1.  Refactor the carry-affecting arithmetic ops to save ~130 lines of code and make the later patches easier.
2.  Add PPCAnalyst optimization for not calculating carry flags that won't be used (especially useful for srawix).
3.  Add the ability to keep carry flags in the x86 flags register between ops in the case that they're used in the next op, such as in super common idioms like subc/subfe and so on.
4.  Reorder carry-affecting instructions to try to be next to each other whenever possible.

Seems to be ~12% faster overall in Pokemon Puzzle from a quick inaccurate benchmark. Probably a lot less in actual games, but I don't know.
I'd be fine with both too (considering it was like that before). But this doesn't necessarily mean we have to keep all code as it is and mustn't change anything when we move it around :)