Generalized failure condition detection in actions.

Instead of explicit checking during execute (which ties us to the current
model of execution in which failures are undetected prior to a run), we
now have a set of failure codes in an enum and a verification method that
runs independently. At present, this still takes place inside of execute().