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
[Android] Add a few helper functions to EGLHelper.
Let's us check for extension support and OpenGL version.
VideoConfig: Rename Separation to Depth and update descriptions.

More accurate since it's not a real IPD and Nvidia also calls it depth.
GeometryShaderManager: Boost convergence value.

Most game don't require much granularity regarding the convergence value.
The default convergence was also too low, this commit increases it tenfold.
VideoConfigDiag: Enable stereoscopy options.
VideoConfig: Rename "StereoMonoEFBDepth" to "StereoEFBMonoDepth"

Makes a little bit more sense.
VideoConfigDiag: Don't enable the post-processing config button when there are no options.

The handling of the Anaglyph override was incorrect.
[Android] Add support for sterescopy configuration.

This menu allows us to configure the stereoscopy video settings if the device supports it.
This menu is only enabled if the hardware supports everything needed to use the feature.
JIT: fix carry optimization on blocks that end early

I don't know if this shows up currently, but e.g. if you force blocks to be
under a certain length, this problem (a crash) shows up.
Fix Metroid Prime 1 NTSC GameCube: charge beam effect, thermal visor, main menu dialogs, saving in ship, morphball transitions, and inventory outline.
Metroid Prime PAL support.
Note, it is possible to choose 50Hz or 60Hz at the start of the game in Metroid Prime PAL.
On a real GameCube 50Hz renders at a higher resolution, but in VR we always use all the resolution.
The visors look slightly better in 50Hz mode due to the way EFB copies work, but I recommend 60Hz for better head-tracking.
XFBEncoder: Cosmetics.
DSPLLE: Silence -Wshadow warning and conform more to style.
D3D: Fix Virtual XFB viewport.

Looks like I was incorrect about swapping the bottom and top members.
Renderer: Invalidate the FramebufferManager if the XFB mode is changed.

Fixes incorrect texture sizes after switching XFB modes.
Renderer: Cosmetics.
Merge pull request #1766 from Armada651/enable-stereo

Enable stereoscopy settings.
Merge pull request #1761 from Sonicadvance1/Android_stereoscopy

Adds stereoscopy configuration support to Android.