gitsync.Repo includes all repo related operations

We tend to operate on Repo objects and binding methods to them makes sense. This
also begins hiding implementation details behind the Repo interface to allow
future operations on heterogenous Repo types (cli polled, remote etc.).