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.
auto merge of #16185 : luqmana/rust/match-drop, r=pcwalton

Fixes #15571.
Fixes #16151.

r? @pcwalton