Fix tagging so that tag commits arrive on the correct branch.
Refactor branch_tip that relies on recent versions of mercurial
Split the ugly tag writing code into it's own method.
Support heavyweight tags. Such tags have author, date, and commit message information that can be included in the tags commits