Reorganize faulting stuff.  Differentiate between arch- and OS-specific defines.

- Get rid of ArmMemTools.cpp and rename x64MemTools.cpp to MemTools.cpp.
  ArmMemTools was almost identical to the POSIX part of x64MemTools, and
  the two differences, (a) lack of sigaltstack, which I added to the
  latter recently, and (b) use of r10 to determine the fault address
  instead of info->si_addr (meaning it only works for specifically
  formatted JIT code), I don't think are necessary.  (Plus Android, see
  below.)

- Rename Core/PowerPC/JitCommon/JitBackpatch.h to Core/MachineContext.h.
  It doesn't contain anything JIT-specific anymore, and e.g. locking
  will want to use faulting support regardless of whether any JIT is in
  use.

- Get rid of different definitions of SContext for different
  architectures under __linux__, since this is POSIX.  The exception is
  of course Android being shitty; I moved the workaround definition from
  ArmMemTools.cpp to here.

- Get rid of #ifdefs around EMM::InstallExceptionHandler and just
  provide an empty implementation for unsupported systems (i.e.
  _M_GENERIC really).  Added const bool g_exception_handlers_supported
  for future use; currently exception handlers are only used by the JIT,
  whose use implies non-M_GENERIC, but locking will change that.

- Remove an unnecessary typedef.
Merge pull request #1449 from comex/memtools-merge

Reorganize faulting stuff.  Differentiate between arch- and OS-specific defines.
Merge branch 'master' of https://github.com/dolphin-emu/dolphin
Separated out the CPU and GPU thread path to avoid clobbering.
Removed the Eternal Darkness check as it is no longer required.

Fixes issue 7835.
Flush the regcache before each FIFO write check.  Fixes the FIFO overflow that occurs in NBA2K11.
Update CPStatus before processing the FIFO events and force an exception check on interrupts.
Added more information into the FIFO unknown opcode error message.
Added a wait state if the CPU thread is running ahead of the GPU thread
Refreshed the CPStatus when the scheduled interrupt event occurs
Changed the CPEnd loop check to an exact match.
Changed ProcessFifoAllDistance back to how it was.
Changed IPL to use delayed transfer completions.