Allow gitfs to use git commit SHAs as envs

This only works so far for the fileclient, it will not work in the top
file. Additional work needs to be done to enable sha envs to be found by
the top file.

**EDIT: This has been refactored slightly, and rebased. Also, pygit2 is now supported.**