rust-needsdrop: fix expr_use_visitor post reversion of ast::Arm NodeId change.
rust-needsdrop: Revised early_drop warning message to try to clarify
that the problem cannot necessarily be fixed at the point that is
highlighted by the span.
root testsuite: some cases I encountered while bootstrapping.

They may sort-of exist in the existing root test suite, but not
exactly like these cases.
rust-needsdrop: Revised MatchMode to include NonBindingMode explicitly.
root testsuite: test cases uncovered from bootstrapping `std::io:stdio`.

These should both compile, preferably without any warnings.  Right now
`foo40` emits a warning.  And worse, `foo39` causes a compile error.
rust-needsdrop mem_categorization: track when we are in pat context `id @ []`.
Use `pat_already_bound` to track whether wildcard could not consume input.
rust-needsdrop: handle arm `s @ Err(_) | s @ Ok(_) => ...` properly.

To accomplish this:

  mem_categorization: track when we are in pat context `id @ []`.

  expr_use_visitor: filter out moving into wildcards when
  the pat_is_already_bound_by_value flag is set.
root testsuite: added tests that attempted to check macro backtraces from extern crates.

It actually failed to recreate the problem I was seeing though, which is this:

https://gist.github.com/pnkfelix/383606c1fd56fa827f40