RFC: Macro reform

[Rendered view](https://github.com/kmcallister/rfcs/blob/macro-reform/text/0000-macro-reform.md)
Hygiene's also fine; the standard approach to hygiene does the right thing for macro-defining macros. All the information needed to keep names at "different levels" from colliding with each other is already present. 

One example in the Rust codebase is `maybe_whole` in parser.rs. It's a pretty long and repetitive definition, and could probably be shortened with a macro-defining macro. In fact, maybe it should be, but that's a problem for later.