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.
Fix LTO with GCC 4.9

For LTO to work, GCC 4.9 requires using the wrappers gcc-ar and gcc-ranlibs:
http://gcc.gnu.org/gcc-4.9/changes.html

CMake doesn't account for this yet:
http://public.kitware.com/pipermail/cmake-developers/2014-January/009344.html
PPCAnalyst now detects internal branches better

For example:

```
addr     opcode    disasm
80026584 48000054  b	->0x800265D8 
```
Removes ZeroFrog's "optimized" memcpy and memcmp functions.

These were only compiled in on Windows and x86_32.
They provided "optimized" copies and compares based on blocksizes for the AMD Athlon and Duron CPU families.
The code was taken from something that AMD provides with a as-is license.
Just get rid of this crap.
Merge pull request #370 from Sonicadvance1/remove_specialized_memcmp

Removes ZeroFrog's "optimized" memcpy and memcmp functions.
Use accurate frsqrte in Interpreter.

The implementation of frsqrte exposed by this change isn't completely
correct; that will be fixed in a later commit.
Interpreter: make fres match hardware.

New table-based implementation written based on actual hardware behavior.
(hwtest coming soon).
Check for errors when reading lines from ini files.

Fixes issue 7283.
Flash netplay window when someone joins if the window doesn't have focus.
Limit netplay chat messages to 2000 characters.

There's not really a good reason to be sending messages longer than that, and very long messages can hang dolphin for quite a long time.
Fix a couple race conditions.

Checks if another game is already starting to boot before starting to boot a new one, and only change video backend, and dual core if a game is actually not running.
JIT: JitBaseBlockCache::valid_block is now std::vector<bool>

This was previously a std::bitset, which resulted in generation of suboptimal code by VS2013 compiler.
See https://gist.github.com/kayru/753db9607d680e26194b
JIT: JitBaseBlockCache::InvalidateICache no longer memsets iCache memory to INVALID_BYTE.

This is redundant, since we reset the valid_block bits any way.
However, this was a source of a significant performance issues in some games.
In particular, Metal Gear Solid: Twin Snakes.
removed trailing whitespace
Merge pull request #396 from kayru/opt_icache_invalidation

JIT: Optimized iCache invalidation
Jit: get rid of incorrect implementations of fres and frsqrte.

The existing implementations produce answers which aren't consistent with
the hardware, and games care about correct floating point math.

These can be reimplemented at some point in the future, if someone cares
enough, but the general case is probably too much code to inline.

(I'm leaving the ARM implementations in place by request, even though they
suffer the same issues.)
Interpreter: refactor the rsqrte code, and use it for ps_rsqrte.
New frsqrte implementation; verified accurate.

This is similar to the old implementation, but it uses smaller tables, and
handles more edge cases correctly.  (hwtest coming soon.)
Jit: Use infinity and NaN from numeric_limits.

MSVC's implementation of INFINITY is unusable.