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
[AArch64] Removes ARMv8 as a generic target.

Generic flag disables the ability to have backpatching supporting.
Also compiles Dolphin with CRC instructions enabled.
[AArch64] Register cache improvements.
Adds the ability to flush the cache and maintain state.
Adds the BindToRegister ability.
Sorts register usage as callee saved used first, reduces dumping pressure when jumping to external routines/interpreter.
Adds a function to store a register, for use when flushing a register that won't be used during the rest of a block.
[ARM] Adds a ArmCommon folder.

Moves the backpatch flags and struct to a common location for ARM.
I'm sure there will be more things that use this common ARM location in the future.
[AArch64] Removes CODE_SIZE variable.

This is in a global location now which conflicts with this one.
[AArch64] Add an exception exit function with the exit location already in PC.
This will be used with idle skipping later.
[AArch64] Optimization in the dispatcher.

Align our dispatcher to a page so we can jump to it with a ADRP+BR pair instead of ADRP+ADD+BR.
Also make sure to save /all/ of our callee saved registers that we are supposed to save.
Requires PR #1705 prior to merging.
[AArch64] Flush registers from register cache if they won't be used again.

This requires PR #1705 and #1723 prior to merging.
[AArch64] Adds support for BindToRegister to the integer instructions.

This requires PR #1723 prior to merging.
[AArch64] Add partial support for cmp* instructions.

This support is as far as ARMv7's support for these instructions.
Requires PR #1728 prior to merging.
Update Outdated Google Code References
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.
VideoLoader: remove VAT_*_FRACBITS

They are used to remove the flush amounts, but as we don't
flush anymore on vertex loader changes (only on native
vertex format right now), this optimization is now unneeded.

This will allow us to hard code the frac factors within the
vertex loaders.
VertexLoaderUid: remove operator<

Not needed for unordered map.
VideoCommon: Move NativeVertexFormat cache to VertexLoaderManager