rustc: gensym the module names for --test to avoid introducing user-accessible names.

This requires avoiding `quote_...!` for constructing the parts of the
__test module, since that stringifies and reinterns the idents, losing
the special gensym'd nature of them. (#15962.)
move a test into a run make, to check external affect rather than
implementation details.

(Mainly to avoid accessing the secret internal test module symbol name.)
testsuite: implement #[reexport_test_harness_name] to get access to the
default entrypoint of the --test binary.

This allows one to, e.g., run tests under libgreen by starting it
manually, passing in the test entrypoint.
auto merge of #15964 : huonw/rust/gensym-test, r=alexcrichton

This requires avoiding `quote_...!` for constructing the parts of the
__test module, since that stringifies and reinterns the idents, losing
the special gensym'd nature of them. (#15962.)
librustc: Allow mutation of moved upvars.
librustc: Update unused mut lint to properly track moved upvars.
Add tests.
librustc: Don't use the same alloca for match binding which we reassign to in arm body.
librustc: Also use new alloca if matching on an arg or upvar which we reassign in the arm body.
librustc: Encode upvar_borrow_map in metadata.