Smartdown evaluation engine

Also added a command line script in `bin/smartdown` which can evaluate smartdown.

it's an error in the design of the flow if this exception is raised. It's the equivalent of a ruby `RuntimeError`. So I would expect that the author of the flow would need to be notified so that the error could be corrected.