Break dependencies between `syntax_ext` and other crates
Move `source_util` macros into `syntax_ext`.
Move other early code generation facilities like standard library injection into `syntax_ext`.
The only crate that depends on `syntax_ext` now is `rustc_interface` which is one of the "final" crates that depend on everything.
Minor: Cleanup dependencies of `rustc_driver`, many of them are no longer used after introduction of `rustc_interface`.
r? @eddyb
The syntax crate contains those things concerned purely with syntax
– that is, the AST ("abstract syntax tree"), parser, pretty-printer,
lexer, macro expander, and utilities for traversing ASTs.
For more information about how these things work in rustc, see the
rustc guide: