Removed dependency on sh and external git binary

First pass at refactoring code to use GitPython instead of Sh or other mechanism to call out to git binary.
GitPython provides a pure Python implementation for manipulation git objects and allows use of git binary where available.

TODO: Multiple config_problems messages are generated when the repository is invalid.