Refactor Linter so it returns a LintItem with more info

It's more likely this architecture is useful outside of the dennis
context.