topic: use fully qualified branch name during exchange

For the entire duration of exchange process, we now use branch//namespace/topic
format for branchmap, head checking, etc.

Sometimes we still need to disable this feature (e.g. when pushing to a repo
that doesn't have topic extension enabled), but every other case should be
handled using the new fqbn format. This applies both to internal API, such as
having fqbn as branchmap keys and even making ctx.branch() return fqbn, and to
UI, such as users seeing fqbn in hg branches output and messages from hg push.

Things to note: now we're wrapping revbranchcache.branchinfo() during the
extension setup, instead of doing it only in one place in _headssummary().
We're also using override_context_branch context manager that makes
ctx.branch() return fqbn also in cases when we call the original

There are still places in the UI where branch names are not in fqbn format,
because they don't take part in the exchange process.
8 jobs for branch/default in 17 minutes and 29 seconds (queued for 2 seconds)