Testing tiExpr
Testing tiExpr for StringExpr
Testing tiExpr for NumberExpr
tiExpr for CastExpr

Slight tweak to how ti works for casts. Now just returns the type of the
inner expression - the only time casting works is when the thing being
cast is a tvar, so applying the subst later on will result in the
correct type in the end. Also, if the unify fails, the error will be
shown for the cast now, not the inner expr.
Testing tiExpr for CastExpr
Testing tiExpr for ValueReadExprs
Testing tiExpr for ValueReadExprs