Smartdown evaluation engine

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

what happens here if ```predicate``` and ```outcome``` are nil?