Fix #6342
Implement static_assert attribute

This verifies that a static item evaluates to true, at compile time.
Add static_assert doc blurb
auto merge of #6670 : cmr/rust/static_assert, r=graydon

This verifies that a static item evaluates to true, at compile time.
auto merge of #6672 : yjh0502/rust/fix_6342, r=graydon

Fix #6342
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.