Add an optimization to remove ref temps when possible

This changeset makes inlineFunctions remove reference temps when possible. "Possible" is defined as any call that is a primitive or only contains primitive calls. While not perfect, this does remove ref temps for simple things like =, +=, *=, etc.

test_nested_var_iterator3 has been turned into a bug future in the pull request. A limitation in copy propagation was exposed by my changes, Tom is aware of this and said he will look into it. 
I think we can change this when we actually remove the PRIM_MOVE from insertReferenceTemps. As you said, at the moment it will never be PRIM_ASSIGN, so to me, checking for that just makes this more confusing.