JIT: add "far code emitter" to reduce L1I cache pressure
JIT: use far code emitter in more places
JIT: avoid redundant flushes in some obvious cases

If we're about to end a block, we're going to need to flush anyways, so
don't do it on a branch just before the end. Saves instruction cache size.

This can probably be made a lot smarter.