Changes the handling of if-then-else expressions.  Removes the optimizations
supplied by the COND macro, because they are buggy.  The default behavior is now
to rewrite to an ifThenElse operation.  The optimized handling can be enabled
by defining SPRITE_OPTIMIZE_IF_EXPR.

The conditional syntax is now changed in the DTREE syntax.  Macros IF, THEN,
ELSE, and ELIF are used to describe conditional rewrites.

Introduces the construct template function to replace direct calls to new.
That should improve the applicability of forward declarations is operation
rules.

Running on yellow-eyed.
------ Config refcnt-opt ------
reverse              0:01.38
tak                  0:01.70
rfib                 0:00.30
exp3_8               0:00.21
tree_insert          0:00.96
tree_insert_32       0:00.94
primes               0:02.38
queens               0:00.45
------ Config gc-opt ------
reverse              0:00.73
tak                  0:01.87
rfib                 0:00.27
exp3_8               0:00.10
tree_insert          0:01.42
tree_insert_32       0:01.48
primes               0:02.47
queens               0:00.33