If with delayed evaluation

This is another take on an implementation for making the `if` function behave correctly (only the branch of code corresponding to the condition is evaluated.

I like this one better than #836.

The approach here is to allow the `if` sass function to declare some of its arguments as delayed. For those arguments the unevaluated syntax tree node is passed to the function instead of the value.

This approach makes functions with delayed arguments behave identically to normal functions with respect to their calling syntax.

The evaluation context now provides a `perform` method which can be used to perform a tree node in the correct environment. If we decide other Sass builtins require this sort of delayed evaluation it will now be trivial to build them. For instance we could trivially implement something like:

```
for-each(1 2 3 4 5, i, $i * 2) => (2 4 6 8 10)
```

This ability is limited to the if function by forbidding other functions during declaration.