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