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.