Introduce renames in status

Renames in status require more detailed data than simply paths, in
order to collect old path, new path and similarity data.  Use
git_status_list to collect this data and use a new StatusEntry to
store it.
Update libgit2 to 96fb6a6

https://github.com/libgit2/libgit2/compare/98eaf39...96fb6a6
Initial rename detection work
Revise API for rename/copy detection
Remove trailing whitespaces
Introduce ObjectDatabase.CalculateHistoryDivergence()

Fix #562
Explicitly dispose handle
Don't load a remote's refspecs lazily

We already have the refspecs parsed the git_remote, and loading them
lazily means we'll be parsing them again, and possibly parse a different
set from the ones we used to have loaded.

Make the loading eager, and pass the RemoteSafeHandle to more places, as
we need to use it in order to provide a single snapshot of the data.
Network: allow downloading from a url

This is our implementation of in-memory remotes. Ask the repository to
fetch/list from a url instead of a remote.