Support replacing text within commit/tag messages (issue #21)

Still some scruff in here...

Chunky refactor unifying the cleaning of commit/tag message text.

The most unusual case to be handled is when the /only/ thing that needs
to be cleaned in a repo is annotated tag message text.