Fix finding the commits present in the fork repo and not in the main one
Fix creating pull-request when the changes in fork repo are not on the top of the main repo

For example if the fork is behind the main repo of 2 commits but still
contain 1 commit that is not present in the main repo (and could be
included)
Implement non-fast-forward merge

This means, merge the two branch and create a commit having 2 parents.
Check that the merge actually did merge something and inform the user otherwise
Drop our own check that the changes were merged to rely on the one of pygit2