Fix HasAny() enum helper to ease migration to .Net 4.0
Mark TreeEntryTargetType.Tag as obsolete
Add type details to FilePathMarshaler error
Enhance Index.RetrieveStatus() test coverage
Fix test with repository clone
Move AssertReflogEntryIsCreated to BaseFixture
Teach Repository.Reset to append to the Reflog
Add CompareOptions

* ContextLines
* InterhunkLines

Closes #423
Update libgit2 binaries to 5aee963

https://github.com/libgit2/libgit2/compare/b641c00...5aee963

This also change naming convention of libgit2 binaries.

Each LibGit2Sharp version works against a specific version of libgit2.

LibGit2Sharp managed code relies on the dynamic loader to find the proper libgit2 binary. This binary is located in a directory structure next to the managed assembly, and the loader is instructed to search within this directory structure.

Up until now, the binary being searched for was bearing a generic name: [lib]git2.(dll|so|dylib).

However, on Windows, if one older version of the native binary, with the same name, is already loaded in the memory, the loader will reuse this one, no matter what directory it's been loaded from. Chances are great that this old libgit2 version is incompatible with what the newer version of LibGit2Sharp expects from its API or behavior.

In order to mitigate this, libgit2 binaries are now suffixed with the libgit2 commit sha they've been build from and  LibGit2Sharp will bind to a specifically named binary:

 - git2-{short_sha}.dll on Windows
 - libgit2-{short_sha}.so on Linux
 - libgit2-{short_sha}.dylib on Mac OS X.

This should allow one to run two different future version of LibGit2Sharp, side by side, without any name clash.
Introduce repo.ObjectDatabase.CreateTag()
Generate a unique ID at compile time to work around a CLR bug
Add shallow test repo
Introduce repo.Info.IsShallow
Enhance Index.RetrieveStatus() test coverage
Update libgit2 binaries to 9d9fff3

https://github.com/libgit2/libgit2/compare/5aee963...9d9fff3
Release LibGit2Sharp v0.12.0
Remove obsolete members
Expose TagFetchMode property on Remote type and include mechanism to update it.
Fetch should respect the remote's configured tagopt setting unless explicitly specified
Introduce TreeDefinition.From(Commit)