Add BitSet and, as a test, convert some JitRegCache stuff to it.

This is a higher level, more concise wrapper for bitsets which supports
efficiently counting and iterating over set bits.  It's similar to
std::bitset, but the latter does not support efficient iteration (and at
least in libc++, the count algorithm is subpar, not that it really
matters).  The converted uses include both bitsets and, notably,
considerably less efficient regular arrays (for in/out registers in
PPCAnalyst).

Unfortunately, this may slightly pessimize unoptimized builds.
Convert registersInUse to BitSet.
Add workaround for OS X symbol clash and AllOnes helper method.
Convert some VideoCommon stuff to BitSet.

Now with a minor performance improvement removed for no reason.
Add unit test.
FileSystemGCWii: Shorten some string concatenations

Just does it all on one line instead.
VolumeDirectory: Pass std::string by reference for SetUniqueID/SetName
Add range checking to CopyTo/FromEmu so it won't segfault.
Remove old (and now incorrect) error checking code.

We will now rely on Memory::CopyFromEmu to do bounds checking.

Some games actually load palettes from 0x00000000, despite the
fact no valid palette data should ever be there.

Fixes Issue 7792.
Create userdir/Dump/Frames as needed.

This is used for framedump.raw in non-Windows builds without libav
support.
Merge pull request #1428 from phire/fixPaletteCpy

Fix Invalid Palette Pointer error.
Added flags for Russia and Australia
Merge pull request #1413 from Stevoisiak/moreFlags

Added country flags for Russia and Australia
Merge pull request #1421 from comex/frames-mkdir

Create userdir/Dump/Frames as needed.
Merge pull request #1430 from lioncash/voldir

VolumeDirectory: Pass std::string by reference for SetUniqueID/SetName
Merge pull request #1429 from lioncash/concat

FileSystemGCWii: Shorten some string concatenations
Merge pull request #1307 from comex/bitset

Higher level bitset wrapper
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.