Add a helper method for checking that hg messages are in order
First pass at pushing tags.

This seems to work fine with lightweight tags. It generally assumes that
only tags are being pushed (ie: git push --tags), but it doesn't fail
completely if you try to push it with a ref (git push --tags origin HEAD).

The problem with lightweight tags is that they don't appear to have any
associated username or date in the git history. So this code is using the
default name and date when it creates the commit in mercurial that
modifies .hgtags.

A bug is that it pushes to default no matter what.

It also hasn't been tested yet with named tags, but that is coming.
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