adding empty detail detect for commit

When creating the html for a commit detail, if the detail is None an
error can occur. Now it will produce an empty message.
separating the commit detail from html

To keep things cleaner the embedded call to obtain the raw commit data
has been separated from the call to generate the detail html.
being more explicit on None check in commit html
ignoring decode errors

When processing input from the subprocess there is an error in the
manner that non-ascii characters are displayed. To allow the commit
details to be printed the errors are now ignored until a fix can be
implemented.