BaseFixture: easy creation of a config-isolated repository

We should try to keep the user's configuration away from the tests as it
may affect what the code ends up doing. To that effect,
InitIsolatedRepository() returns a Repository with some dummy
configuration.

This includes moving the fetch tests over to this.
RefspecFixture: use the isolated repository
BaseFixture: allow passing options to the isolated repo

By default we still generate a config-isolated Repository, but if the
user passes their own options, we'll use that instead.
Enrich the merge base

1. Bind git_merge_base_many and git_merge_base_octopus
2. Drop git_merge_base
3. Introduce enumeration MergeBaseFindingStrategy
4. Refactor the test case
Enable now passing test assertions
Update libgit2 to fd61f05

https://github.com/libgit2/libgit2/compare/36a80fd...fd61f05
Expand Merge API.

This includes refactoring of the merge logic to support different merge workflows, including pull.

Also adds a simple repository to perform merges in, simplying test logic.
Remove Network.FetchHeads from the public API.
Remove Repository.MergeHeads from public API.
Introduce PullOptions.
Write reflog entry as part of Fast-forward merge.
Update marshalling of git_merge_head_id
Update Fast-forward merge reflog message.
Teach Repository to merge a branch