Remove std::cast::transmute_immut_unsafe

It can be done in safe code using `as *T`.
Fix spans for enum-struct match arms

Correct spans for fields in enum struct arms where the field and variable are unified
std: io: flush stdout on stdin read from tty
rename std::vec -> std::slice

Closes #12702
auto merge of #12772 : thestinger/rust/slice, r=alexcrichton

Closes #12702
auto merge of #12854 : nick29581/rust/parse-enum-struct, r=alexcrichton

...where the field and variable are unified
rename std::vec_ng -> std::vec

Closes #12771
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>
Mention share in guide-unsafe instead of freeze
Mention Share in the tutorial