Use appropriate working tree in git commands

I was working on a script that needed to manipulate the working tree of a Git repo. While Grit appeared to handle non-bare repos, it passed in the `--git-dir` parameter but never passed the `--work-tree` parameter to Git, causing it to do all working tree manipulations in the current working directory instead of the working tree of the repo it was supposed to work in. I've provided a patch that fixes that, which passes the working tree into the external Git command if working with a non-bare repo. 

This patch doesn't affect bare repos, and doesn't affect any usage which doesn't touch the working tree. All unit tests still pass with this patch. The patch does not include any new unit tests to test the new functionality, however, as it looked like more worth than I wanted to do to set up the testing infrastructure for that use case. Let me know if you need tests for this.

There are also a couple of cleanup patches here; one which fixed a unit test that failed when I ran it in my timezone (and also failed if I ran it against half-hour timezones), and one which removes some vestigial code.