checkers: new Checker interface, add tests

This makes the checkers package actually useful.

I swithered about this. I started with something like your
suggestion, but in the end I decided that a strict
correspondence with the method names was actually more
predictable, and it potentially sets a precedent for this 
not-unusual case. It means that every time this happens,
we don't have to think of some (inevitably inconsistent) name
for the field that clashes with the method with the same name.

We have already used this idiom in other places (in errgo and the
charm tests and I see it's used by other people too (e.g. Russ Cox in
his FUSE code). So I'd prefer to leave it for now. If you find that
you're constantly getting it wrong, then we'll change it.