smart: store reported symrefs

The protocol has a capability which allows the server to tell us which
refs are symrefs, so we can e.g. know which is the default branch.

This capability is different from the ones we already support, as it's
not setting a flag to true, but requires us to store a list of
refspec-formatted mappings.

This commit does not yet expose the information in the reference
listing.
remote: expose the remote's symref mappings

Add a symref_target field to git_remote_head to expose the symref
mappings to the user.
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.