Clean up debug string functions in OS_HLE.

 * Use GetString instead of GetPointer.
 * Use C++ strings instead of char* pointer math.
Add Linux perf JIT support (/tmp/perf-$pid.map)

'perf' is the standard builtin tool for performance analysis on recent
Linux kernel. Its source code is shipped within the kernel repository.

'perf' has basic support for JIT. For each process, it can read a file
named /tmp/perf-$PID.map. This file contains mapping from address
range to function name in the format:

  41187e2a 1a EmuCode_804a33fc

with the following entries:

 1. beginning of the range (hexadecimal);
 2. size of the range (hexadecimal);
 3. name of the function.

We supply the PowerPC address of the basic block as function name.

Usage:

    DOLPHIN_PERF_DIR=/tmp dolphin-emu &
    perf record -F99 -p $(pgrep dolphin-emu) --call-graph dwarf
    perf script | stackcollapse-perf.pl | grep EmuCode__ | flamegraph.pl > profile.svg

Issue: perf does not have support for region invalidation. It reads
the file in postprocessing. It probably does not work very well if a
JIT region is reused for another basic block: wrong results should be
expected in this case. Currently, nothing is done to prevent this.
Move the JIT registration logic in its own file

Move the JITed function/basic-block registration logic out of the CPU
subsystem in order to add JIT registration to JITed DSP and
Video/VertexLoader code.

This necessary in order to add /tmp/perf-$pid.map support to other
JITed code as they need to write to the same file.
Use CLI argument for Linux perf JIT support
ControllerConfigDiag: Potentially fix scaling problems on high DPI

Fixes issue 7940 hopefully.
GLX: try to get an OpenGL 3.3 core context
VideoCommon: Make GPU syncing hack optional

This hack is there for quite a long time, and lots of games crashes if it's disabled.
But it's still a hack, so it shouldn't be enabled hard coded. This commit create a new
ini option for this hack which is enabled by default.
Maybe some games does still run very fine without this hack.
Only use bounds check for DVDLowUnencryptedRead
Check if there is a disc for all disc reads
Mark cover as open when no disc is inserted
[Android] Add a few helper functions to EGLHelper.
Let's us check for extension support and OpenGL version.
Always read 0x20 bytes of disc ID
FramebufferManager: Copy all EFB layers to the XFB framebuffer.
OGL: Support stereoscopic XFB blit to screen.
FramebufferManagerBase: Only allocate one layer for Real XFB.
GeometryShaderCache: Cosmetics.
FramebufferManager: Copy all EFB layers to the XFB.
D3D: Support stereoscopic XFB blit to screen.
VideoConfig: Turn off stereoscopy when Real XFB is enabled.
VideoConfig: Rename Separation to Depth and update descriptions.

More accurate since it's not a real IPD and Nvidia also calls it depth.