automated in/out punching; added support for punch tagging

The program will determine whether to punch you in or out depending on
the previous call. If you punched in last time, this time you will punch
out.
You can supply a comment or tag for the next punch in/out. If no tag is specified
then it is left blank.