Changed if else primitive to assume closure as inputs. In case of
closure literals, functionality remains. Otherwise, calls to the
runtime-resolved closure is made.

Thus, now, the correct way to apply if else is either with closure
literals, e.g.:

if' condition, trueBlock Else' falseBlock
if: {condition}, {trueBlock} Else: {falseBlock}

or with non closure literal expressions, e.g.:

if: condition, trueBlock, Else: falseBlock

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>