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.
Merge remote-tracking branch 'libgit2/vNext' into diff-rename-detection