Add the UpstreamBranchCanonicalName property to Branch

This property contains the reference of the tracked branch, relatively to the upstream repository (so "refs/heads/master", and not "refs/remotes/origin/master").
Add Push overloads taking Branch instances