Add delayed evaluation of arguments to support the if builtin.
Make the if() function work as expected.

Only evalaute the corrent argument corresponding to the state of the
conditional.
Merge pull request #934 from nex3/if_with_delayed_evaluation

If with delayed evaluation