refactored `DoFetch` into three seperate methods for clarity and consitancy
refactored `DoFetch` into three seperate methods for clarity and consitancy

updated caller methods as necissary

shana/libgit2sharp,AArnott/libgit2sharp,xoofx/libgit2sharp,red-gate/libgit2sharp,oliver-feng/libgit2sharp,libgit2/libgit2sharp,vorou/libgit2sharp,jorgeamado/libgit2sharp,jorgeamado/libgit2sharp,github/libgit2sharp,jeffhostetler/public_libgit2sharp,whoisj/libgit2sharp,OidaTiftla/libgit2sharp,PKRoma/libgit2sharp,Zoxive/libgit2sharp,rcorre/libgit2sharp,Zoxive/libgit2sharp,OidaTiftla/libgit2sharp,whoisj/libgit2sharp,AMSadek/libgit2sharp,AMSadek/libgit2sharp,oliver-feng/libgit2sharp,rcorre/libgit2sharp,psawey/libgit2sharp,github/libgit2sharp,sushihangover/libgit2sharp,AArnott/libgit2sharp,shana/libgit2sharp,dlsteuer/libgit2sharp,sushihangover/libgit2sharp,jeffhostetler/public_libgit2sharp,ethomson/libgit2sharp,xoofx/libgit2sharp,dlsteuer/libgit2sharp,psawey/libgit2sharp,vorou/libgit2sharp,ethomson/libgit2sharp,Skybladev2/libgit2sharp,red-gate/libgit2sharp,Skybladev2/libgit2sharp