checkers: new Checker interface, add tests

This makes the checkers package actually useful.

This could be written with a continue in the case of an error and without the need of an else block [shrug].
In the error case, when we don't return, a comment would probably help the reader.