Fixup interface.

The runner now actually returns something. The predicate function can
now accept an arbitrary number of arguments, though this does complicate
the generator interface somewhat.