Remove TrByImplicitRef and source field on datums
Refactor helper routines to be less tied to match syntax
Remove local_imm/local_mem since all variables are now by reference
Remove some spurious copies that are identified by later patches
Fix matching of rvalues with destructors

Fixes #4542.
Remove copy bindings from patterns.
Replace NDM with proper FIXME
auto merge of #6818 : nikomatsakis/rust/irrefut-patterns-refactoring, r=graydon

Various bug fixes and simplifications I did as part of a patch to fix `let` patterns.

r? @catamorphism