Smartdown evaluation engine

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

Le'ts move the ```.put(:otherwise, ->(state) {true})``` to default_start_state method?