Smartdown evaluation engine

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

it's used to simulate an 'else' clause e.g.

```
* pred1?
  * pred2? => outcome1
  * otherwise => outcome2
* otherwise => outcome3
```

happy to talk it through as well