refactor Method definition to make space for macros

This change propagates to many locations, but because of the
Macro Exterminator (or, more properly, the invariant that it
protects), macro invocations can't occur downstream of expansion.
This means that in librustc and librustdoc, extracting the
desired field can simply assume that it can't be a macro
invocation. Functions in ast_util abstract over this check.
test case for method macros
macro method unit test case fix
update fold_method to return a smallvector

This is nice for macros, to allow them to expand into multiple methods
remove no-stmt check

nothing wrong with a statement expanding into 0 stmts, that I can see.
macro in method position parsing
add make_method method to MacResult trait

this allows macro results to be parsed as methods
expansion abstraction
macro expansion for methods

Closes #4621