Add peephole optimization to remove ref temps
Add a check for FLAG_WIDE_CLASS in PRIM_ASSIGN codegen
Adjust location of canRemoveRefTemps call

canRemoveRefTemps was being called on functions after their nested
functions were inlined. This would cause ref temps to be removed when
they shouldn't have been.

Also fixed a small check in codegen related to FLAG_WIDE and
FLAG_WIDE_CLASS.
Update ref temp removal code to deal with original vars that are refs
Copy a case in codegen from PRIM_MOVE to PRIM_ASSIGN (for no-local)
Change test_nested_var_iterator3 into a bug future

From test_nested_var_iterator3.future:

Bug: Copy propagation can not follow references through record fields

This test started to fail after 4160bf4 (Add peephole optimization to remove
ref temps). The actual failure is due to copy propagation not being able to
follow references through record fields. If this test is run with scalar
replacement, it works correctly since the record fields will be extracted.
Removed canReplaceRefTemps from FnSymbols

Based off Elliot's feed back I removed canReplaceRefTemps from FnSymbols
and instead pass a vector through inlineFunctions that indicates if ref
temps can be removed for that function. Made a small clean up to
callDestructors as well.
Add a few more checks and comments related to ref temp removal
Merge pull request #199 from Kyle-B/ref-temp-peephole

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.