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
Subtransport logic.