debug/types: switch to copy by value for interface.

just to make sure i don't end up accidentally modifying the state
in the future.  if only go had a 'const'...
fix generated graph names/titles.

graphviz doesn't allow some characters that compilers seem to
insert into symbol names.
fix local variable references.

these are always (right?) 32-bit offsets.  we could change our
interface, but maybe some other architecture needs 64-bit
offsets... actually, that really doesn't make sense.  whatever.

just cast to 32-bit first, so that it properly detects negative
offsets.
cfg: rework how we compute loop headers.

the initial algorithm failed with certain if statements that
directly preceded if statements when they were nested in loops.
fix TypeLocal lookup error with address.

need to cast it to int32 first, to make sure it properly notices
the sign.
make it not an error if we don't have type information.

it can help, but most of the time just assuming it's already
correct is enough.
symbolic interp: handle simple reg derefs.

the source is really unchanged; just copy it.  we should do this
more intelligently by defining a function and recursing... but
whatever, it'll never really be needed in practice.

(famous last words...)
add 'heat' sample/test program.