checkers: new Checker interface, add tests

This makes the checkers package actually useful.

Good point. I got this logic wrong initially and it's still unclear.

Done, slightly differently, without so many negatives. Hopefully the new logic is now clear enough that the comment isn't needed, as it corresponds closely to the wording in the Checker.Check doc comment.