root testsuite: add the test for scope-end fwd-scan.

Note that this test is somewhat thorough in that it covers `if`-expr,
a `while`-loop and a `return` statement.  I should probably make tests
for `loop`, `for`-loop and uses of `break` within loops.
rust-needsdrop: generalize scope-end fwd-scan for return statements.

Also generally improve the code structure and instrumentation a bit.
root testsuite: made some quick Gc<T> tests.

These worked out of the box, which I guess is not surprising, except
that I had thought that these were the cause of our many warnings when
I had previously attempted to bootstrap libsyntax.
Update rustdoc to reflect refactoring to ast::PatWild
rust-needsdrop: for Gc<T>: TC pred is `moves_by_default`, not `needs_drop`.
root testsuite: add more cases for Box<T> and Gc<T>.

Note: foo29.rs exposes the case that prompted my switch to
`moves_by_default`.

Note: foo28.rs shows a case that is currently mishanded by the
fragment sibling code.  Still needs fixing.
root testsuite: multiple match pats in one arm behave weird at moment.

A new test: the two occurrences of `b` are treated as distinct
variable bases for loan_paths, which is currently causing me some
grief.

(Is there some normalization function to unify them that I am
overlooking?  How else does this represent references to `b` in the
"common" body?)
PatWild refactor: update libregex_macros to reflect change to `ast::Pat`.
rust-needsdrop: quick hack, print out a count of how many distinct warnings we have emitted.
rust-needsdrop: placeholder code for improving handling of Box.

Note that foo28.rs is still broken; changes in this area are expected
to fix it.