Try to allocate executable memory close to PPSSPP memory if not below 4GB

This tries to work around #1106 without having to remove RIP-relative addressing from the X64 emitter.

Both Windows and *nix follow a similar strategy: find the location of PPSSPP global variables in memory and try to find free memory areas below it. We don't search up because we could be at the upper-limit on usable memory in the process. On Windows we specifically query each memory region until we find one that is free. On *nix, we jump down 0.5GB in virtual memory and try allocating there, relying on the fact that mmap can search around if it can't use the exact address passed in. These new routines only happen if PPSSPP is in high memory (>0xFFFFFFFF) and if it's in low memory it falls back to the existing behavior for that.
The other way of allocating can take more time, especially if it has to check multiple memory regions. Not sure if it's ever enough time to be noticeable, but the other method is much simpler, so keeping an alternative simple path for situations that can use it is good IMO.

`exec` / `low` should be removed if neither of them are ever false.