Update dead variable elimination

Dead variable elimination attempts to remove dead variables (who would've
thought?). If a dead variable is detected it checks the rhs to see if it can be
removed as well. For cases like:

var a = b;

you can simple remove the whole expression. However for cases like

var a = someFunc();

you don't want to remove the function call because it may have side effects.
Previously the check for if the rhs might have side effects was if it's not a
symExpr, it might have side effects. However, we have plenty of primitives that
do not have side effects that are left as a result.

var a = b + c;

would result in:

b + c;

which some compilers would complain about because this is an unused expression
This changes the check to see if the rhs is a function and if not removes the
whole expression. I believe that none of our primitives have side effects, but
I'm worried that some might in the future.