Include op= primitives in narrowWideReferences

[Reviewed by Tom]

Before this patch, narrowWideReferences would leave references
that are used in op= primitive calls, for example +=, as
wide references. That's because when the PRIM_OP_ASSIGN primitives
were added, narrowWideReferences was not updated.

In narrowSym, we update narrow wide references to continue
(ie not to fail to narrow) symbols that are set in
PRIM_OP_ASSIGN calls (in the for_defs part) and then
we update it to continue if it sees PRIM_OP_ASSIGN in
the use part.

I believe this change is justified because an op= will
not change whether or not a variable needs to be wide.
The variable had to already exist. The other argument
(ie the amount to add in +=) is always a value and
so it does not matter whether that was wide.

This patch reduces the number of calls to comm_get/comm_put
and so should improve performance. It allows the LLVM
aggregator to bundle the communications in the
test/performance/ferguson tests that previously had
unsatisfying large communication counts.



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@21869 3a8e244f-b0f2-452b-bcba-4c88e055c3ca