Smartdown evaluation engine

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

Let's talk about those, and try splitting responsibilities of what errors get handled by smartdown and which ones get handled by smartdown-frontend