Reorganised maybe monad so that the monadic functions are in a sub-module, leaving just the workflow in the top level module.
Test implementations now attached to correct functions.
State monad, workflow and tests.