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).
uninit fixes