Smartdown evaluation engine

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

Slightly weird indents etc.. in several places. Can we please rubocop this?