Implement #[plugin_registrar]

See RFC 22.

[breaking-change]
Use phase(plugin) in bootstrap crates

Do this to avoid warnings on post-stage0 builds.
Use phase(plugin) in other crates
Use phase(plugin) in tests
Convert libraries to use #[plugin_registrar]
Convert tests to use #[plugin_registrar]
Add a test for deprecated phase(syntax)
Document rustc::plugin
Macro crates now depend on librustc
auto merge of #14554 : kmcallister/rust/plugin_registrar, r=cmr

This implements the design in rust-lang/rfcs#86.  It shouldn't be merged until that RFC is accepted, but it would be great if somebody has time to review the code before then.