kill the CPS strategy in favor of returning objects

TODO: benchmark this - the tradeoff is less stack space but more object
creation.

also TODO: get the furthestFailure stuff to work.
use makeSuccess and makeFailure helper constructors
implement furthest-backtrack error messages

this is a port of #3.