Turn `extern crate` and `use` into first-class items.

This implements RFC PR 385. Closes #18219.

**NOTE**: this is a **work in progress**, not all tests pass yet. oh and I've almost forgotten about rustdoc :P.
These checks seem to have gone away with no replacement, was that intentional?