DSound: use DSound notifications to produce sound.

Pretty straightforward; IDirectSoundNotify lets you register for
notifications after a certain amount of sound has played, so use that
instead of depending on Update() notifications from the CPU thread.

Also, while I'm here, reduce the buffer size by a factor of 4; this seems
to reduce the latency, although the difference is sort of subtle.
[Android] Fix a bunch of input bugs.
Looking at the old code for the ButtonManager was a brainfsck. This fixes a ton of bugs I kept uncovering as I was moving along.

Fixes the gamepad configuration file being incorrect.
No longer treats touchscreen in a special way. Ends up as a regular device with a "Touchscreen" device name.
Was incorrectly converting a index from integer to ButtonType. Wouldn't work due to the addition of some unused(in JNI) enumerators in ButtonType.
Fixes an issue where a map had a key as an axis which was causing its binding to be overwritten for every axis that was used twice (eg main stick left and right);
Fixes Triggers not working at all.
Fixes DPad not working at all.
Fixes C-Stick only half working.
Removes touch screen specific nativelibrary types onTouchAxisEvent and onTouchEvent.

Adds a configuration version configuration option. Allows easy configuration overwriting if the options need to be changed during updating.

Supersedes github PR #291.
Disable SDL input on Windows.
Remove SDL from Externals.
JIT: unify JitAsm for JIT64 and JIT64IL.

Having a bunch of nearly identical code sitting around isn't a good idea,
so fix that. JITIL had a couple of extra entry points into the JIT main
loop, so adjust the code appropriately.

Also fixes Issue 7186.
DVD emulation: make seek timing more accurate.

Based on real measurements of a Gamecube disk on a Wii.  (If anyone else
is interested in running more tests, I can upload my code; it's a mess at
the moment.)

This isn't a complete model, but it's a step in the right direction:
in Metroid Prime, the loading times are sane, and I think I managed to do it
without breaking anything.
DVDInterface: tweak buffered reads to be a bit faster.

A read finishes when the result is complete in the drive's buffer, not
main memory.
DVDInterface: code cleanup.
Opcode decoding: 0xC0 isn't a valid command.

Fix our opcode decoders to handle this appropriately.
Fixes games that use the MMU to page in code(Rogue Leader).

The issue was that on memory exception we wouldn't call in to PPCAnalyst and our code_block would retain the previous blocks information.
This would cause us to compile the previous blocks instructions in prior to the exception exit.
Opcode decoding: handle missing opcodes 0x88 etc.

Hardware testing shows that they do the same thing as the 0x80 family of
opcodes: they draw quads.
Video backends: fix rounding in lighting computation.

For whatever reason, the hardware doesn't do a full divide by 255, but
instead uses an approximation with shifting, similar to the way it is done
in TEV.
Possibly an OSX buildfix.
Export wii saves to the "User" directory
OGL/VertexManager: Remove unnused m_CurrentVertexFmt
Use size_t in std::string operations in IniFile.cpp, not int
PPCAnalyst now detects internal branches better

For example:

```
addr     opcode    disasm
80026584 48000054  b	->0x800265D8 
```
make IOCTL_SO_GETHOSTID more accurate on Windows
remove unused and unexported function
Merge pull request #354 from magumagu/gx-primitive-mask

Opcode decoding: 0xC0 isn't a valid command.