Change imported macros to use leaky modules rather than leaky functions.
Hoist macro defs out of inner function
Remove space from the middle of path
Adds (more) test cases for auto_encode.
Macros now leave scope

Macro scope is now delimited by function, block, and module boundaries,
except for modules that are marked with #[macro_escape], which allows
macros to escape.
typo-fixing and name-changes
auto merge of #5120 : jbclements/rust/macros-have-scope, r=pcwalton

r?

After this patch, macros declared in a module, function, or block can only be used inside of that module, function or block, with the exception of modules declared with the #[macro_escape] attribute; these modules allow macros to escape, and can be used as a limited macro export mechanism.

This pull request also includes miscellaneous comments, lots of new test cases, a few renamings, and a few as-yet-unused data definitions for hygiene.