librustc: Allow linkage attribute on any statics, not just foreign statics.
librustc: Respect no-compiler-rt target option for static libs as well.
Fix `Vec::map_in_place` not doing what is written in the comment
Add `Show` and `Clone` trait to arrays

Due to not being able to parametrize over array sizes, `Clone` is only
implemented for element types that are `Copy`able.
libstd: improve os::args() doc
Guide: add a pointer to play.rust-lang.org and explain how to run the code examples.
Fix for issue #17574
Look for standard crates in LIBDIR provided by --libdir option,
not in hardcoded libdir path. If there was no LIBDIR provided
during configuration fallback to hardcoded paths.

Thanks to Jan Niklas Hasse for solution and to Alex Crichton for improvements.

Closes #11671
Conformed the 100 char limit and changed colon to semicolon
implement cloned for Option
Deprecate hashmap's find_copy and get_copy in favour of cloned and clone
fallout from deprecating find_copy and get_copy
Fixed several typos in libcollections
Implement more basic traits for the marker types.
Fixed a few typos in libcore
Disallow parsing of struct variants with 0 fields

Make struct variant syntax more consistent with struct syntax and fix an
assert in middle::typeck.

Fix #19003
doc: extend a893397 to make whole document consistent
slightly better deprecation message for fn syntax
auto merge of #18914 : Gankro/rust/cloned, r=aturon

Part of #18424. r? @aturon 

[breaking-change]
change return type of slice_shift_char

`slice_shift_char` splits a `str` into it's leading `char` and the remainder
of the `str`. Currently, it returns a `(Option<char>, &str)` such that:

    "bar".slice_shift_char() => (Some('b'), "ar")
    "ar".slice_shift_char()  => (Some('a'), "r")
    "r".slice_shift_char()   => (Some('r'), "")
    "".slice_shift_char()    => (None,      "")

This is a little odd. Either a `str` can be split into both a head and a
tail or it cannot. So the return type should be `Option<(char, &str)>`.
With the current behaviour, in the case of the empty string, the `str`
returned is meaningless - it is always the empty string.

This commit changes slice_shift_char so that:

    "bar".slice_shift_char() => Some(('b', "ar"))
    "ar".slice_shift_char()  => Some(('a', "r"))
    "r".slice_shift_char()   => Some(('r', ""))
    "".slice_shift_char()    => None

[breaking-change]