JIT: improve handling of stores with a known address, guess FIFO writes

1. Genericize the immediate-address handling, and make it apply to float stores too. Optimize some of the FIFO stores, etc a bit.

2. If the offset of a store is 0x8000, the write is almost always a FIFO store; optimize this case (and set up a fallback path if we're wrong).
Checking this after casting to u32 seems incorrect.
What happens if gatherPipe ends up >4GB and the low 32bits of the address are under 2GB when cast to u32?