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
Common: Remove gotos in FileUtil, and replace FILE*s with IOFile/ifstreams.
Common: Remove goto in MemArena.
DVDInterface: Tweak speeds
Change DSP settings to Audio settings
D3D: Fixed D3D validation error during EFB to texture copy

Texture was being bound as a render target while still being set as a shader resource.
D3D automatically unbinds the SRV in this case and generates a validation error.
The fix is to manually unbind SRV, render into it and then re-bind to old slots.
VideoSW: rewrite VertexLoader to use the VideoCommon one
windows: use qt 5.4.0
VideoCommon: Add a separate constants buffer for the geometry shader.
GeometryShaderGen: Pass the primitive type and always run the generator regardless of stereoscopy.
JIT: free up a register by eliminating RCODE_POINTERS

Also use shorter code in the dispatcher if we can get away with it (e.g. on
Windows where the relevant memory is in the low 2GB).
De-memsetify Wii_SSL and fix segfault.

Fixes #7917
The first memset was clearing the delicate bits of the std::string
in the struct, causing segfaults.

I also removed the rest of the memsets because they were paranoid,
unneeded and waseful. We shouldn't be managing the ssl libraries
structs for it.
I checked and the ssl library's functions were already memsetting
those structs as needed.
GeometryShaderManager: Upload Line/Point width constants.
GeometryShaderGen: Redefine gl_InvocationID so we can use the same variable name in both backends.
GeometryShaderGen: Support multiple primitive types.

And make more stereoscopy code optional.
VideoCommon: Assume we always use a geometry shader, not just for stereoscopy.
VideoCommon: Merge LineGeometryShader into GeometryShaderGen.

This adds line-width emulation support to OpenGL.