Smartdown evaluation engine

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

The intention of this test is to confirm that we do not evaluate the lambdas when performing the comparison but rather we compare the actual lambda objects. The test description is lacking here, maybe it should say something like `is not equal if different lambdas even if they evaluate to the same thing.

But maybe your saying check this by passing in a double and expecting `#call` to never be called on it?