make Configuration#Get methods virtual

The commit
https://github.com/libgit2/libgit2sharp/commit/3d29d95dc7d0addc889679c93d22952fe7bb9d35
moved #Get overloads to extension methods. The problem is the remaining
#Get methods aren't virtual, which means you can't stub in unit tests.
Which broke a bunch of GHfW tests.
Fix test for non-virtual methods in types with public ctor

* Exclude delegates from types checked
* Missing virtual modifiers
Introduce Repository.MergeHeads
Teach Repository.Commit() to cleanup merge data
Teach Repository.Commit() to add merged branches as parents
Teach Branch to cope with unborn tracked branches
Enhance Branch.TrackedBranch test coverage