Improve git interaction

- require git repo dir to be explicitly specified for each git
  operation removing assumptions regarding current working directory
- move git interaction and parsing fns to separate namespace