Refactor comment types into concrete classes

Having concrete classes for the Comment objects allows us to have line
and issue comments present the same interface. This is helpful as the
two types of comments go to different github resources and have
different parameters.
Add commitcheck checker.

This new linter allows applications to setup commit message patterns
that can be searched for. If a commit message does not pass the pattern
an issue comment will be created.

This is useful in situations where you have specific commit message
formatting rules e.g. all commits must reference a bug tracker issue.