Extract git fetch and merge into the Repository

Now unit testing the Repository#pull by itself.
And unit testing the re-written Runner#sync_changes.
Extract git push into the Repository

Now unit testing the Repository#pull by itself.
And unit testing the re-written Runner#sync_changes.