DSP: Fixes behaviour for audio dmas of length 0

This behaviour was tested on a real (wii) console.
DSP: Do updates to DSP interrupt bits asap

This was being scheduled on the next possible event, which caused
timing issues (in FFCC, AI interrupt would fire before DSP interrupt)
DSP: Add minor delay to initial AIDMA interrupt

When AIDMA begins, the first thing it does is load the source address
and length into internal registers. It then triggers the AID interrupt.
Some begin the AIDMA process without all the data necessary for the
interrupt callback being set up already - they require a few more cycles
to set it up (the delay between the DMA being set to begin and the
interrupt firing). The value of this delay was approximated by tests on real
hardware.
Merge pull request #762 from booto/dma-audio-3

DSP: DMA behaviour adjustments to fix regressions
Add Common/Event.h to the VS project files.
Add Common::Event::WaitFor(), which has the same semantics as std::condition_variable::wait_for() (with millisecond units).
Rewrite raw memcard threading code. Intended to fix issue 7484.

EXI memcard code now doesn't know specifics of how data is flushed to whatever backing storage is used.
GC raw memcard now flushes every 15 seconds if dirty, and on memcard destruction.
GCI folder now flushes only on memcard destruction.