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
I think it *should* work, as it should be possible to achieve the same result with fetch with the prune option activated than with a fetch followed by a prune. It's not a big deal either way, though.