Avoid spurious changes in diff-* commands

I use aanand's "git-up" utility ( https://github.com/aanand/git-up ) which uses "grit" for its git operations internally.  The basic workflow is, it fetches remote repos, stashes your local changes (if needed), rebases your tracked branches onto their latest upstream version, returns to your original branch, and unstashes your changes (if stashed).

I noticed it was sometimes stashing in situations where I knew I had no local changes.  Worse, it would then try to unstash at the end, which would unstash my last _actual_ stash, if one exists.  (Perhaps there's a better way to do this than using the global stash?)

I traced this down to the "git diff-files" and "git diff-index" calls in grit, from the Grit::Status class.  Apparently, doing something harmless to a file, like touching it, is enough to make it show up on the "git diff-*" commands, even though "git status" ignores it.  I guess this may be a bug in those commands, not sure.

My solution was to issue a real "git status", taking only the filenames from it, and use that as a baseline to determine what "diff-files" and "diff-index" entries to ignore, while still using those commands for all the extra information they provide.

I hope this is the right approach.  It does seem to have completely resolved the git-up problem.