Introduce SyntaxCheck, PromiseKept and Repair for verify_exec

This is a proof of concept for splitting the traditional Verify function
for modules. It splits Verify into 3 stages, syntax checking (evaluation stage),
status checking (whether the promise needs repair), and Repair. Repair returns an
ActionResult, specifying the outcome of attempting to repair the promise.

The end goal is to have all modules take a struct with callbacks to these functions,
enabling pluginification and a step towards introducing isolated evaluation state
(by effectively removing cfPS from lower levels).

Additionally, a GetLockName function is needed for each promise type, but this
may be reconsidered in the future (when we get around to reconsider locking).