Smartdown evaluation engine

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

to clarify the real behaviour is that is delegates the equality comparison, using lambdas as an example confuses this.