Remote prune

This is a rebound from #2578. I've rebased master and fixed the compilation errors.

@carlosmn I've copied over the `prune_overlapping` test from git core and it looks like it passes the test, unless I'm doing something wrong, which is possible :sweat_smile: 

There is also a test that calls remote_prune without fetching, to ensure that it works as expected too, it's in the `fetchlocal.c` test file, should I move it somewhere else?

I'd really appreciate any feedback.

/cc @linquize
It looks like we should be able to swap these lines for `git_remote_set_prune()` plus `git_remote_fetch()`. The callbacks also seem unnecessary since we can assume that the fetch is happening properly, and we can just test for this bit of it.