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.