Currently `vcs.head_ref` is actually the revision for hg and git, but
the change id for jj. This inconsistency makes it tricky to find the
right thing across all three.
In reality, this property is simply wrong for Git and Hg. A ref is not a
revision.
To clear things up, this renames `head_ref` -> `head_rev` (implementing
it for jj). Then adds new implementations for `head_ref` that actually
return a ref. This is basically the same as `vcs.branch` but with a
fallback if no branch or bookmark is active.
Differential Revision: https://phabricator.services.mozilla.com/D294177