rm only use of type_is_immediate outside of trans
Add test for issue #9446.
fix dropping non-primitive immediates

Closes #9446
auto merge of #9643 : thestinger/rust/immediate, r=alexcrichton
Prevent leakage of fmt! into the compiler

We're not outright removing fmt! just yet, but this prevents it from leaking
into the compiler further (it's still turned on by default for all other code).
std: Remove usage of fmt!
extra: Remove usage of fmt!
syntax: Remove usage of fmt!
rustc: Remove usage of fmt!
rusti: Remove usage of fmt!
rustdoc: Remove usage of fmt!
rustpkg: Remove uses of fmt!
compiletest: Remove usage of fmt!
rpass: Remove usage of fmt!
cfail: Remove usage of fmt!
rfail: Remove usage of fmt!
bench: Remove usage of fmt!
tutorial: Remove usage of fmt!
pretty: Remove usage of fmt!
Merge fall out of removing fmt!