Make it easier to change the "high" and "low" CPU frequencies, as well as to switch to the user's chosen frequency for the game.

Conflicts:

	source/nds/ds2_main.c
	source/nds/entry.cpp
	source/nds/gui.c
Add SDK modifications by BassAceGold as of 2011-04-14, as well as modified DMA functions as of 2013-01-29.
Whoops. I forgot to replace an instance of ds2_setCPULevel from the experimental branch cherry-pick.
Fix a name clash between Snes9x's dma.h and the DS2 dma.h by renaming the DS2 dma.h to ds2_dma.h.

Add preliminary support for drawing emulated screens with DS2 DMA.
Force waiting for a screen to be transferred (update mode 1) because otherwise the next screen can go into DMA.

Use channel 1 instead of channel 5, which must be busy for some reason.
Add some forgotten DMA files.
Write back the data cache before using DMA to draw emulated frames.
Faking out the sound synchronisation with a buffer of silence wasn't necessary.
Synchronise the controller status more spread out inside a rendered frame:
* before rendering a background;
* before rendering sprites;
* while rendering more than 128 samples of audio at once ("Prefer fluid video");
* after every 16 scanlines of CPU execution instead of every 1;
* while waiting for an audio buffer to become available;
* while killing time between frames with fast-forward disabled.

Controller presses and releases are now combined in a DS button bitfield using a shorter 32-bit algorithm. See entry.cpp:NDSSFCAccumulateJoypad and #define ACCUMULATE_JOYPAD in the source.

This is still not suitable for playing platformers frame-perfectly, but it's much better than half a second of latency to press or release a button, and one still needs to press buttons a bit more than just light taps. I'd say 50 milliseconds is the latency now. Platformers requiring more precision can be played with frameskip 0.

DMA does not require double-buffered displaying, so synchronise the controller more often by disabling double-buffered displaying again.