libcore: Inline atomic constructors.

Servo really wants this.
Fix example for BufferedReader

Fixes #18197
Enforce object safety

closes #17670

[breaking-change]

Traits must be object-safe if they are to be used in trait objects. This might require splitting a trait into object-safe and non-object-safe parts.

Some standard library traits in std::io have been split - Reader has new traits BytesReader (for the bytes method) and AsRefReader (for by_ref), Writer has new trait AsRefWriter (for by_ref). All these new traits have blanket impls, so any type which implements Reader or Writer (respectively) will have an implmentation of the new traits. To fix your code, you just need to `use` the new trait.
changes to libs
changes to tests
Change extensions traits to blanket impls
Changes for Windows terminal
mk: Clean just one llvm build at a time. Closes #17852

When building for multiple targets, the initial 'make' invocation
always fails. The missing build stamp causes clean-llvm to be
invoked, but clean-llvm cleans *all* llvm builds. So what happens
is that 1) all llvm's are cleaned (a no-op), 2) llvm-${target1}
builds, 3) all llvm's are cleaned (deleting llvm-${target1}),
4) llvm-${target2} is built, 5) the remaining build for ${target1}
fails because llvm does not exist.

This makes the clean operation only clean the correct llvm build.
Should greatly reduce bot failures.
Rebasing fixes
Try and fix Windows terminal
check_static_recursion: Handle foreign items
auto merge of #18448 : brson/rust/clean-llvm, r=alexcrichton

When building for multiple targets, the initial 'make' invocation
always fails. The missing build stamp causes clean-llvm to be
invoked, but clean-llvm cleans *all* llvm builds. So what happens
is that 1) all llvm's are cleaned (a no-op), 2) llvm-${target1}
builds, 3) all llvm's are cleaned (deleting llvm-${target1}),
4) llvm-${target2} is built, 5) the remaining build for ${target1}
fails because llvm does not exist.

This makes the clean operation only clean the correct llvm build.
Should greatly reduce bot failures.
auto merge of #17704 : nick29581/rust/object-safety, r=nikomatsakis

r? @nikomatsakis
auto merge of #18279 : bgamari/rust/check-static-recursion, r=alexcrichton

I just found this patch which at some point solved a problem I encountered. Unfortunately I apparently dropped it before I managed to write a test case. I'll try to dig up the code that triggered the issue.
auto merge of #18367 : pcwalton/rust/inline-atomic-constructors, r=thestinger

Servo really wants this.

r? @brson
auto merge of #18374 : steveklabnik/rust/gh18197, r=sfackler

Fixes #18197
trans: use types from argument patterns instead of the function signature.

This fixes ICEs caused by late-bound lifetimes ending up in argument
datum types and being used in cleanup - user Drop impl's would then
fail to monomorphize if the type was used to look up the impl of a
method call - which happens in trans now, I presume for multidispatch.
rustc: avoid `use`-ing `syntax::ast::*`.
rustc: middle: rename `ty::t` to `Ty` and use it unqualified everywhere.
rustc: middle: ty: replace unsafe pointers with references in Ty.