Hide result function of Action module
Use Except for breaking execution
Reorder action monad
Add a message field to Failure
Support monad-control to catch unhandled exceptions
Add commit count check to handlePatternMatchFail function