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
ISOProperties: Rename Date to Build Date
MemoryWindow: Remove wxSprintf call, use wxString::Format instead.
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.
JIT: use fastmem loads in MMU mode.

Even in games that require MMU mode, loads outside the area specified by
the BAT are rare, so fastmem is a substantial improvement.

All of the interesting changes are in the backpatch handler, to make it
generate DSI exceptions correctly.
JIT: simplify code using MOVTwo.
VideoSW: rewrite VertexLoader to use the VideoCommon one
windows: use qt 5.4.0
DiscIO: Clear error status when reading file
Merge pull request #1687 from lioncash/sprintf

MemoryWindow: Remove wxSprintf call, use wxString::Format instead.
Merge pull request #1675 from Stevoisiak/Rename-Build-Date

ISOProperties: Rename Date to Build Date
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.