librustc: Disallow `use` from reaching into impls or traits.

This can perhaps be restored in the future. For now this is a precursor to
making typedefs work as expected.
librustc: Make extern functions no longer of `*u8` type.

Calling them LLVM asserts still, but that never worked anyway. This
is the backwards compatible part.
librustc: Disable borrow check debugging even when rustc is compiled with -O0.

This improves -O0 compile times dramatically.
test: Fix tests.
librustc: Make `~Trait` two words by storing the type descriptor in the vtable.
auto merge of #6524 : pcwalton/rust/two-word-unique-object, r=nikomatsakis

r? @nikomatsakis