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.
`map_hint` was static before I committed, must have been a error on my end.

I was unaware Mac didn't have MAP_32BIT. Your simpler solution will work for the first time, but the `map_hint` should still be updated for subsequent calls. Stepping backwards in this case might not be desirable, since a lot of the address space below 0.5GB is probably used by PPSSPP.