Implementation of planout interpreter in Golang

The semantics for `coalesce`, `and` and `or` appear to be incorrect.  All of these operators should execute their clauses from left to right in a lazy way, so that if you are doing, e.g., `a && b`, `b` would only get evaluated when `a` is true.