Pygit2 0.21 and merge strategies

With these patches repoman works with latest pygit2/libgit2, what improves the dependencies problems, as most distributions are packaging libgit2 on 0.21 series.

One of the things that have changed more is the merge behaviour, pygit2 provides basically two methods now, one to analyze the situation (detecting ffs, uptodates and so on), and another one to do the merge, without commiting it. Both implementations in git (merge and merge_fastforward) have been reimplemented here because of that, and having in mind future refactorizations to support multiple merge strategies for the same SCM.
We should avoid using both branch objects and branch names in the same context. Both `local_branch` and `other_branch_name` should be objects or strings, but we should not mix them.

But ok, this is out of scope.