Fix 'debugnan' feature to not give false positive for arrays and components.

The way the optional "debugnan" feature works is to insert code that,
every time a symbol is written to, checks it for NaN or Inf values.  But
it simply checked ALL the data for that symbol, so if the symbol was an
array or an aggregate (like a color), upon something like a[0] = 0, it
might still issue an error if a[1] (as yet uninitialized) coincidentally
contained the right bits for a NaN. This kind of "false positive" could
interfere with debugging an actual NaN which occurred elsewhere.

So this patch makes the debugnan checks much smarter by having a special
case for 'aassign' (array assignment) and 'compassign' (component
assignment) ops, and in that particular case only checking for NaN/Inf
values in the particular array element or component that was just written.