Remove bogus include
Remove hash util module

only used in one place so doesn't make sense to have in module
Add support for evaluating lambdas in state

A lambda in state could be a predicate or a function injected by a
plugin. They will be lazily evaluated and memoised, which we can safely
do because the state is immutable.
Refactor flow to store coversheet as a node

Treat coversheet as a regular node and store the flow name which can be
used to lookup the coversheet from the node list.
Engine implementation using Engine::Transition
Move IndeterminateNextNode error into Engine module

it's an engine concern