working on hygiene
make fold_attribute part of Folder trait
replaced ignore-pretty with no-pretty-expanded

Per @acrichto's suggestion, use the more narrowly focused exclusion.
get rid of needless wrapper function
WIP match hygiene, compiles
cleanup and shiny new more-functional interface
remove unnecessary abstraction
improve match test case to include guard
hygiene for match-bound vars now implemented

Closes #9384
remove trailing whitespace
make tests hygienic...

... and possibly totally pointless. Specifically, fixing
these to make their macros hygienic may mean that they no
longer test the thing that they were supposed to test.
undo helpful attempt to spell-check

Yes, that word is spelled \'memoization\'
added unit and standalone test for 15221, extra debugging output
removed incomplete comment

as written, I don't believe this comment was helpful; I think it's
better just to steer the reader toward a general understanding of
hygiene.
simplified test case
looks like a cut-n-paste error in unused code
adjust fold to fold over interpolated items/exprs/etc.

Closes #15221
comments only
auto merge of #15233 : jbclements/rust/match-var-hygiene-etc, r=cmr

This PR includes two big things and a bunch of little ones.

1) It enables hygiene for variables bound by 'match' expressions.
2) It fixes a bug discovered indirectly (#15221), wherein fold traversal failed to visit nonterminal nodes.
3) It fixes a small bug in the macro tutorial.

It also adds tests for the first two, and makes a bunch of small comment improvements and cleanup.