Starting point for the new MMIO interface

Design doc:
    https://docs.google.com/document/d/11qcGCWLne1wYvmtFaSrOKZt_vHxXrcWcZsdWJ-MJnyo/edit

The code is currently not used. Migration plan:
    1. Implement MMIO access via MMIO::Mapping in parallel to the current
       method.
    2. Implement all existing MMIO handlers via the new interface.
    3. Remove the old hwRead/hwReadWii/hwReadIOBridge code.
    4. Implement JIT optimizations for MMIO accesses.
MMIO: Add utility functions to grab pointers to low/high parts of a u32 variable
MMIO: Port the PI MMIOs to the new interface.
MMIO: Port the VI MMIOs to the new interface.
MMIO: Port the MI MMIOs to the new interface (and rework that module extensively).
MMIO: Make invalid handlers a simple specialization of the complex type
MMIO: Pass the read address to read/write handlers and forward it to the complex handlers.
MMIO: Rename Complex to Complex{Read,Write} because MSVC and old GCC are too stupid to figure out overloads
MMIO: Port the DSP/ARAM/AI MMIOs to the new interface.
MMIO: Port the DI MMIOs to the new interface.
MMIO: Port the SI MMIOs to the new interface.
MMIO: Port the AI MMIOs to the new interface.
MMIO: Port the IPC MMIOs to the new interface.
MMIO: Port the EXI MMIOs to the new interface.
MMIO: Port the VideoCommon CP MMIOs to the new interface (and provide framework for other video related mappings).
MMIO: Port the VideoCommon PE MMIOs to the new interface.
MMIO: Port the SW CP/PE MMIOs to the new interface.

Migration is now complete.