Call p_readlink to determine symlink size
Return the matched pathspec pattern in `git_pathspec_match_path`

Instead of returning directly the pattern as the return value, I used an
out parameter, because the function also tests if the passed pathspecs
vector is empty. If yes, it considers that the path "matches", but in
that case there is no matched pattern per se.
diff: add a notify callback to `git_diff__from_iterators`

The callback will be called for each file, just before the `git_delta_t` gets inserted into the diff list.

When the callback:
- returns < 0, the diff process will be aborted
- returns > 0, the delta will not be inserted into the diff list, but the diff process continues
- returns 0, the delta is inserted into the diff list, and the diff process continues
Fix call to readlink
Include <string.h>
Replace call to strnlen with call to strlen
Replace LoadLibrary with GetModuleHandle, since kernel32 is loaded by default

As requested
Moved braces to conform to code style
Merge pull request #1325 from SHyx0rmZ/fix-windows-symlinks

Fix Windows symlinks
Merge pull request #1249 from yorah/topic/diff-notify-unmatched-pathspecs

diff: Add a callback to notify of diffed files
Fix Windows symlinks
Teach remote branch to return its remote
Teach refspec to transform destination reference to source reference