CommitFilter: add simplify-by-first-parent option

Now that this is doable directly inside the revision walker, let's
expose it as a possible filter option.

This fixes #258.
Rename CommitFilter.FirstParent to FirstParentOnly
Refactored Network.Fetch() with FetchOptions

Changed the signature to Network.Fetch(Remote, FetchOptions). As of
#536, optional parameters should be grouped in a xxxOptions type.
Network.Fetch() has currently 5 optional parameters, and a sixth one
(RefSpecs) will be introduced soon.
Network.Fetch() accepts optional refspec

Added Network.Fetch(Remote, IEnumerable<string>, [FetchOptions]) overload to allow for custom refspecs to
be fetched. The refspecs are used only temporarily and not stored in the configuration.

Fixes #572.
Add Archive() to ObjectDatabase
Add tarring capabilities

This commit adds [tar-cs](http://code.google.com/p/tar-cs/) to LibGit2Sharp without any modifications to the original source code.
Trim down tar-cs to keep only the tarring capabilities needed for git-archive

The resulting `TarWriter` file is a low-level abstraction that can be used to write tar files.

Included:
- only keep a unique `TarWriter` file
- merging `UsTarHeader` and `TarHeader`, and adding them as private classes of `TarWriter`
- removal of unneeded `Write` overloads

Some changes to the tar format has been included to better comply with the one described here: http://en.wikipedia.org/wiki/Tar_%28computing%29#Format_details
Add archive as tar functionality

Implemented as an extension method of `ObjectDatabase`.
Lots of logic taken from [archive-tar.c](https://github.com/git/git/blob/master/archive-tar.c).
Add tar archiving tests
Fix compilation warnings
Simplify OdbBackend.ReadPrefix() implementation
Deprecate ObjectId.StartsWith(byte[], int)
Fix Xml documentation compilation warning
Update libgit2 binaries to 65e9dc6

https://github.com/libgit2/libgit2/compare/96fb6a6...65e9dc6
Release LibGit2Sharp v0.15.0
Drop obsolete members after release v0.15.0
Skip failling tests due to recent github handling modification of include-tag

Github recently (25th of december, 2013) changed its handling of the include-tag option. Skipping tests while waiting for a proper solution to be found.

Same thing as libgit2/libgit2#2020
Delegate Commit.MessageShort to libgit2 (#593)
Prefer git_patch_print to git_diff_print

This has the nice side effect of allowing binary changes
to be detected.
Update error categories to match libgit2