add smallintset
auto merge of #6677 : yjh0502/rust/smallintset, r=graydon

Implement SmallIntSet (refer #4984)
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: 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.
librustc: Fix privacy checking for cross-crate variants
libstd: Rename libcore to libstd and libstd to libextra; update makefiles.

This only changes the directory names; it does not change the "real"
metadata names.
librustc: Rename core injection to std injection
libextra: Rename the actual metadata names of libcore to libstd and libstd to libextra
librustc: Change `std` to `extra` throughout libsyntax and librustc
librustc: Make `std_inject` inject the name `std`, not `core`
libfuzzer: Rename `std` to `extra`.
librustdoc: Rename `std` to `extra`.
fuzzer: Change `core` to `std` in the fuzzer
syntax: Change syntax extensions to expand to `std::foo` instead of `core::foo`
test: Update tests to use the new syntax.
test: Update tests and import the prelude in some more places.
libstd: Fix merge fallout.
libsyntax: Fix more merge fallout.