Update Checkout and Merge options

Checkout methods now use CheckoutOptions

Merge now takes several options:
  - Option to specify what is checked out for file conflicts.
  - Report CheckoutProgress and CheckoutNotify
  - Option to specify MergeFileFavor

Updates for code review feedback
Make Network.ListReferences(Remote) accept Credentials

Add CanListRemoteReferencesWithCredentials() test.
Simplify Travis build script

As travis-ci/travis-ci#2205 is fixed, we don't need the
$TRAVIS_OS_UNAME variable any longer.
Introduce repo.Revert(commit)
Continue implementing revert
Slightly enforce Revert() test coverage
[UpdateLibGit2] Add v12 csproj format to description.
Fix indices of test repos so that they're not dirty
RepositoryStatus: add RecurseIgnoredDirs

Expose this option to have the status go into ignored directories.
Update libgit2 binaries to 58eea5e

https://github.com/libgit2/libgit2/compare/06d772d...58eea5e

Configuration: Use snapshot for Get/Find calls. Thanks @carlosmn.
Merge: Keep track of new MergePreference.

StatusFixture: change expectations for star-ignore
When passing bin/* newer libgit2 considers that as ignoreing the bin/
directory and thus won't give us its contents unless we pass in the
RecurseIgnoredDirs option. Done by @carlosmn.
Introduce GlobalSettings.Features()
Clone the test repository only when required
ObjectDatabase: we should fail when asked to read too much

ObjectDatabase.CreateBlob() accepts a number of bytes to read. It
currently however treats this as a max, rather than a hard size, which
seems ripe for introducing bugs.

Assert that we should throw when asked to read too much from a Stream.
ObjectDatabase: stream objects when we know we can

When given a size and no path, we know that we do not need to buffer the
content or apply any filters, so we can create an write-stream into the
object database and put in our content directly, avoiding the temporary
file and callbacks altogether.
Slight documentation fix
Remove unneeded clone for Remote validity test.
Fix issues reported by CodeAnalysis (NRefactory).
Update libgit2 binaries to 2f6f6eb.

https://github.com/libgit2/libgit2/compare/58eea5e...2f6f6eb
Introduce RemoteCollection.Remove()
BranchCollection: Obsolete Move and introduce Rename.