RFC: Improvement to hygienic macros

Make macro hygiene easier to use and less error-prone by eliminating the `esc` function and making hygiene automatic instead.  Details are in the commit log.  Comes from a discussion on julia-users.

Risk: this broke the `@printf` macro because of its complex implementation.  It was easy to fix, but I do not know if there are other macros that will break that are in packages not tested by `make testall`.

Possible future work: `eval` does not respect hygiene so only non-hygienic quotes must be used; this does not require any changes to existing code.  It would be nice to fix that but it would be a lot of work.