Generalize communicating with a repository through an interface. #9

The code requests a data from any repo (Git, Mercural...) and expects custom list of "Commit" items,
that keeps all the data about revisions regardless of actual repository type