Smartdown evaluation engine

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

do we need the ```other.is_a?(self.class)``` here?