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.
Introduce Remote.IsValidName(string)

Deprecate RemoteCollection.IsValidName(string).

Update test CanTellIfARemoteNameIsValid(string, bool).

Fixes #679
Added libgit2 features to Repository.Version

Introduced NativeMethods.Capabilities .

Added CanCreateValidVersionString() test .

Displaced NativeMethods CompiledFeatures to Proxy

Remove irrelevant region on Proxy

Make Proxy.get_compiled_features match get_libgit2_features .

Add mising [Flags] tag on GitBuiltInFeatures .

Remote trailling whitespace in Proxy

Resolves #676
Introduced Reference.IsValidName(string)

Deprecated ReferenceCollection.IsValidName(string) .

Updated Test .

Fixes #680

Fixed typo in [Obsolete] tag.

Rebase into current vNext.
Cleanup whitespaces
Fix Commit() so that it always updates the HEAD

Fix #692
Make Travis build target osx platform