Implement a more correct fix for -X with git worktrees.
Implement a more correct fix for -X with git worktrees.

I had previously tried to implement a fix for some problems I had
experienced using `rbt post -X`, initially pushed as 5f1b920.
Unfortunately, this fix caused some regressions, including a couple
broken unit tests.

Since then, I've narrowed the problem down further to using `-X`
specifically inside of git worktrees. This indicated to me the actual
bug, which is that `GitClient._get_root_directory()` was using a
somewhat bogus way of determining the toplevel root of the working tree.
I've changed that to use `--show-toplevel` instead of `--git-dir`, which
fixes everything.

Testing done:
- Ran unit tests.
- Ran `rbt diff -X` within a git worktree and saw that files were
  correctly excluded.

Reviewed at https://reviews.reviewboard.org/r/9874/

reviewboard/rbtools,reviewboard/rbtools,reviewboard/rbtools