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've tried moving it after updating tips and it looks like it doesn't work as expected then. I might be doing something wrong.