Discover crate type information late if necessary.
Some crates aren't found during eager crate-type searching due to being behind `cfg(...)` flags. We still want to be able to handle these, though, so when necessary we now call rustc again to get crate-type information for these cfg-ed crates.
This is necessary for https://github.com/rust-lang/rust/pull/41991.
r? @alexcrichton