Fix Freelook on Linux and add speed reset.

Should fix issue 7692.
Also fixes issue 7147.

I have no idea if these changes will affect Mac or Windows users, so please test.
Update freelook description.
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.
Profiling: measure time on POSIX systems using clock_gettime
JIT: fix dumb mistake in crclr optimization patch
Make EXI use CoreTiming events like everything else instead of having its own slow special check.

Microphone is probably wrong/mistimed because it doesn't take into
account cycles late, but that's not a new issue here.
Allow hard resets to be recorded in movies.
JIT: genericize immediate address handling, support in float stores too
Menu capitalization consistency
MemArena: Fix the launching of non-Wii games

When we cleaned up the code to calculate the shm_position and total_mem
in one step, we sometimes skipped over certain views because they were
Wii-only. When looking at the total memory, we'd look at the last field,
whether or not it was skipped. Since Wii-only fields are the last view,
this meant that the shm_position was 0, since it was skipped, causing us
to map a 0-sized field. Fix this by explicitly returning the total size
from MemoryMap_InitializeViews.

Additionally, the shm_position was being calculated incorrectly because
it was adding up the shm_position *before* the mirror, rather than after
it. Fix this by adopting a scheme similar to what we had before.
Merge pull request #1484 from magcius/memmap-cleanup

MemArena: Fix the launching of non-Wii games
Merge pull request #1481 from FioraAeterna/fixclrcr

JIT: fix dumb mistake in crclr optimization patch
JIT: fix valid_block marking

This caused invalidations that only affected the last portion of a JIT block
to fail, breaking Wii64's block linking. It might affect a bunch of other
games too; I haven't tested.
Merge pull request #1487 from FioraAeterna/fixinvalidate

JIT: fix valid_block marking
Work around LLVM header peculiarity

Bug report: http://llvm.org/bugs/show_bug.cgi?id=21472
Merge pull request #1471 from RachelBryk/reset-record

Allow hard resets to be recorded in movies.
Merge pull request #1483 from comex/on-demand-exi-interrupts

Make EXI use CoreTiming events like everything else instead of having its own special check.
JIT: revert cmpXX optimization

It seems like this wasn't correct in 100% of cases.
Merge pull request #1489 from FioraAeterna/revertopt

JIT: revert cmpXX optimization
Core: Fix potentially uninitialized variable warnings