local transport: expose the symref data

When using the local transport, we always have the symbolic information
available, so fill it.
remote: add api to guess the remote's default branch

If the remote supports the symref protocol extension, then we return
that, otherwise we guess with git's rules.
clone: make use of the remote's default branch guessing

Let's use the remote's default branch guessing instead of reinventing
one ourselves with callbacks.
clone: get rid of head_info

Since we no longer need to push data to callbacks, there's no need for
this truct.
clone: remove left-over status storage

We dup the remote, so we don't need to keep track of user's remote's
settings.