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.