rustc: Always name bytecode based on crate ids

When performing LTO, bytecode is loaded from an archive by using the crate id's
name. If the -o flag was specified when building the original library, it
previously also mangled the name of the bytecode.

This switches to always using the crate id's name when naming the bytecode file,
ensuring that it can always be loaded at a later date, regardless of -o.

Closes #13317
Test fixes from rollup