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
Drop uninteresting information from Exception messages
Introduce default credentials

Abstract Credentials, providing UsernamePasswordCredentials
and DefaultCredentials.
Introduce EmptyCommitException

By default, we now throw an exception when trying to commit an
"empty commit" - that is, one that does not change any items.
This check only applies when doing a normal commit, or an amend
of a normal commit; it does not apply when performing a merge or
an amend of a merge commit.  This check can optionally be overridden.
Introduce CommitOptions

Repository#Commit (and its extension methods) now take CommitOptions.
All prior methods are deprecated.
Short-circuit Committishes for simple identifiers
Update libgit2 to bcc6229

https://github.com/libgit2/libgit2/compare/36a80fd...bcc6229

fixup
Introduce new merge functionality, including Pull, merge options, and
merging branches.

This includes a refactoring of the merge logic to support the new
scenarios. New functionality includes:

- Deprecate Network.Fetchheads, Repository.MergeHeads as these should be
  internal only.

- Introduce ability to pull the configured upstream branch for the current
  branch

- Introduce ability to merge a branch into the current branch.

- Introduce options to control merge behavior. The current exposed options
  include whether to commit the merge commit and the allowed merge types.
Fix xml doc ambiguous references
Improve performance of refs.ReachableFrom()
Update libgit2 to 06d772d

https://github.com/libgit2/libgit2/compare/bcc6229...06d772d
Release LibGit2Sharp v0.17.0
Drop obsolete members after release v0.17.0
Fix some issues pinpointed by Code Analysis
Upgrade to .Net 4.0

Fix #654
Improve marshaling of git oid

Doing a simple copy of the byte array is a lot faster than using
Marshal.PtrToStructure.