Give each linter a unique ID that also indicates warning vs. error

Fixes #68. Fixes #30.

I still need to update the API docs in the README.