Remove std::cast::transmute_immut_unsafe

It can be done in safe code using `as *T`.
rustc: Prevent false positives in crate loading

Previously, any library of the pattern `lib<name>-<hash>-<version>.so` was
>considered a candidate (rightly so) for loading a crate. Sets are generated for
each unique `<hash>`, and then from these sets a candidate is selected. If a set
contained more than one element, then it immediately generated an error saying
that multiple copies of the same dylib were found.

This is incorrect because each candidate needs to be validated to actually
contain a rust library (valid metadata). This commit alters the logic to filter
each set of candidates for a hash to only libraries which are actually rust
libraries. This means that if multiple false positives are found with the right
name pattern, they're all ignored.

Closes #13010
std: io: flush stdout on stdin read from tty
rm obsolete references to `DeepClone`
Add a Share kind

Fixes #11781
Make `Rc`, `Cell` and `RefCell` NoShare
Replace Freeze bounds with Share bounds
Relax interner's Share bound

The interner uses `RefCell` internally which opted out from Share.
Add Unsafe<T> type
Make Cell and RefCell use Unsafe<T>
Let ArcData use Unsafe<T>
Gather loans for static items

We currently gather loans for static items that are defined within
functions. This change enables loan gathering on static items declared
globally.
Forbid borrow of static items with unsafe interior
Allow static items that don't fulfill `Freeze`
Make atomics interior Unsafe<T>
Let travis check docs for stage1
Mention share in guide-unsafe instead of freeze
Mention Share in the tutorial
auto merge of #12980 : cmr/rust/overhaul-stdio, r=thestinger

this comes from a discussion on IRC where the split between stdin and stdout
seemed unnatural, and the fact that reading on stdin won't flush stdout, which
is unlike every other language (including C's stdio).
auto merge of #12686 : FlaPer87/rust/shared, r=nikomatsakis

`Share` implies that all *reachable* content is *threadsafe*.

Threadsafe is defined as "exposing no operation that permits a data race if multiple threads have access to a &T pointer simultaneously". (NB: the type system should guarantee that if you have access to memory via a &T pointer, the only other way to gain access to that memory is through another &T pointer)...

Fixes #11781
cc #12577 

What this PR will do
================

- [x] Add Share kind and
- [x]  Replace usages of Freeze with Share in bounds.
- [x] Add Unsafe<T> #12577
- [x] Forbid taking the address of a immutable static item with `Unsafe<T>` interior

What's left to do in a separate PR (after the snapshot)?
===========================================

- Remove `Freeze` completely