Fixed a lot of my confusion with the version control stuff, and I enabled external version control. Hopefully all is still working and makes better sense now:
-Fix version control: "diff last revision" should be "diff with previous revision"
-Ensure svn, git, and mercurial "diff with previous revision" all behave like the name suggests (this is what I thought everything was doing the first time, but only svn behaved like this)
-When doing external diffs, copy files into temp folder to allow for more sane names for files
-Git remove "staged diff" in favor of a single diff which will show staged and unstaged against the base (this is what I wanted from the beginning)
-Add external version control options
That is it, I am done for now...unless I, or someone else, finds some bugs. I am going to give it a bit to ensure everything is stable, and if so, I think I will submit to package control.
I didn't actually think I was going to add this much, but I think it has turned into a pretty useful plugin now.