rust-needsdrop: Checkpoint of many changes to tease apart later.

Checkpoint of many changes that should be teased apart or outright
removed at some later point.  Lots of experimental stuff.
Semi-working.
revised iter2 root example to fit mold of other root unit tests.
root Makefile: Revised %.log target to cover trans-based codegen as well.
dataflow: Now apply_gen_kill is pub, defend against degenerate case.
Add `opt_span_bug` to session, analogous to `opt_span_warn`.
Once you are beyond stage0, Gc<T> does not auto-coerce to &T.
rust-needsdrop: Various improvements to error reporting.

that is, error reporting on internal rustc issues in my hacked code.
Added another file to the root unit tests.
rust-needsdrop: fail a bit more eagerly to provide better debug feedback.
rust-needsdrop bug fix: handle singleton enum not doing downcast in more places.

This corner case is annoying.  I should look into whether it would be
better to just get rid of it and use Downcast everywhere, since I do
not think it is serving its former purpose anymore anyway.
More revisions to the root unit test suite.
smaller test case derived from dlist example
rust-needsdrop: Remove with_var_parent, address warning when building librustc.
Fix bug: `LpExtend(_, _, LpDeref(_))` needs different handling than others.
rust-needsdrop: *proper* fix for long-standing bug with proc handling.

When doing `LoanPath::to_type`, `LpUpvar` is either an implicit
reference (when the upvar is captured by reference) or a value (when
captured by value and thus moved into the closure).

So I propagated this information into the `LoanPath` so that I can easily
compute the right thing in `LoanPath::to_type`.
root unit tests: proc test case.