[RFC] "Proper" Audio/Video Dumping

This has been used by the TASing community for a while to get proper audio and video dumps. Originally created by natt, I recently started maintaining the code and made some changes, along with cleaning up a portion of the existing code. In it's current state, it's not ready to be merged, but it is functional for the purposes that the TASing community needed. 

What it does is dump the audio straight from the DSP (which means no DTK support for the time being), as well as modifying the video portion of dumping. When selecting dump video and dump audio, it also creates a timecode file, which we use afterwards to sync the audio and the video together with avisynth scripts. It spits out dspdumpX.wav files instead of using the broken audiodump.wav file, with the X incrementing on every sample rate change (say from 32khz to 48khz). There is also a dump audio to avi feature, which tries to sync up both audio and video together and puts it into a video file. 

I'm looking for comments on this to see what changes need to be done, I'm sure there is lots that needs to be done before this can be fully merged into the master branch.
This doesn't need std::string around it.

std::string has a constructor for `const char*` so it will do this implicitly.