Versions of the combinators from the speculation package
with the signature rearranged to enable them to be used
directly as actions in the Cont and ContT monads
or any other Codensity-shaped monad.
When a is unevaluated, spec g a evaluates the current continuation
with g while testing if g==a, if they differ, it re-evalutes the
continuation with a. If a was already evaluated, the continuation is
just directly applied to a instead.