TernaryExpression

* renamed ConditoinalExpression to TernaryExpression
* implemented ExpressionVisitor for TernaryExpression
as e.location is used all over the place, it is better to put it in a local variable. The compiler must reload location for the object every single time unless it can prove that it didn't changed in the meantime, which it cannot.