adjust self parsing not to discard existing context
get rid of keyword idents, replace with names

should prevent future bugs
replace idents with names
self arg macro test case
introducing let-syntax

The let-syntax expander is different in that it doesn't apply
a mark to its token trees before expansion. This is used
for macro_rules, and it's because macro_rules is essentially
MTWT's let-syntax. You don't want to mark before expand sees
let-syntax, because there's no "after" syntax to mark again.

In some sense, the cleaner approach might be to introduce a new
AST node that macro_rules expands into; this would make it clearer
that the expansion of a macro is distinct from the addition of a
new macro binding. This should work, though, up until I discover
that macro_rules actually introduces new identifiers; then the
whole thing falls apart.
test case for expansion of method macro
implement hygiene for method args
remove outdated comment

I believe this comment is now irrelevant, as a result of
commit 6757053cffb585249105fbd76f
comments
make macros non-capturing
macro literals should be compared by name only
carry self ident forward through re-parsing

formerly, the self identifier was being discarded during parsing, which
stymies hygiene. The best fix here seems to be to attach a self identifier
to ExplicitSelf_, a change that rippled through the rest of the compiler,
but without any obvious damage.