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

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, 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) ops, and in that particular case only checking for NaN/Inf values in the particular array element that was just written.