Debugging mode: detect uninitialized values

New ShadingSystem attribute "debug_uninit" tries to detect use of
uninitialized values at runtime, somewhat similar to "debug_nan"
operation.  The basic idea is that all temps and locals are
pre-initialized to special values (NaN for floats, -INT_MAX for ints,
"!!!uninitialized!!!" for strings).  Before every op, it checks all
variables that are about to be read for these values.  It's not perfect
-- you will get "false positive" results if you purposely assign those
special values in your shader.  But I'm willing to bet that's a rare
and unadvised case.

This is very expensive and so is off by default.  But it's a very handy
way to zero in on exactly where you are using an uninialized value!

For consistency, also renamed "debugnan" to "debug_nan" (but retained
the old name as a synonym for back compatibility).
Fix missing output of shader parameters when returning from a block.

Early 'return' was jumping to the exit_instance_block, but we were
incorrectly putting the code that copies output variables to their
destination layer before this block, rather than after.  The solution
is to do the output copying after that jump point.