Remote revamp (refspecless, _ls)

[This turned into a bit of a larger change than expected]

When we fetch from a refspecless remote, we need to download its `HEAD`, and we need to write out a FETCH_HEAD for it.

Let's keep a copy of the refspecs we're going to use, which is usually what the user already has, but may have an additional "HEAD" if there are none.

While here, I noticed that the behaviour of `git_remote_ls()` is stupid, as there's no reason to use callbacks when we could simply return the array we already have (with typical caveats about lifetime), so I'm changing it to do just that, which ends up removing a lot of silly code in callbacks.