Allow the buildroot to be a subdirectory of the git worktree

This allows the buildroot to be a subdirectory of the git worktree, which supports a usecase we have internally where two pants builds will live within the same git repo for a while until they can be merged.

- Add a class method to attempt to detect a git worktree
- Report changed_files relative_to some directory (usually the buildroot)

Testing Done:
- confirmed that files outside the relative_to path/directory are ignored
- added test for worktree detection at various levels of nesting
- `./pants goal changed` and `./pants goal bundle` succeed in a buildroot below the worktree root (and in existing projects)

Bugs closed: 405

Reviewed at https://rbcommons.com/s/twitter/r/886/