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.
Wrap this method in a `try/catch` to wrap the pygit exceptions into catchable repoman ones.