Doc: Clears up trim_char doc

Closes #18451
Add a `repeat` function to the prelude

Implements a part of RFC 235.

[breaking-change]
Really fix #17982 this time.
rustc: Implement -l and include! tweaks

This is an implementation of the rustc bits of [RFC 403][rfc]. This adds a new
flag to the compiler, `-l`, as well as tweaking the `include!` macro (and
related source-centric macros).

The compiler's new `-l` flag is used to link libraries in from the command line.
This flag stacks with `#[link]` directives already found in the program. The
purpose of this flag, also stated in the RFC, is to ease linking against native
libraries which have wildly different requirements across platforms and even
within distributions of one platform. This flag accepts a string of the form
`NAME[:KIND]` where `KIND` is optional or one of dylib, static, or framework.
This is roughly equivalent to if the equivalent `#[link]` directive were just
written in the program.

The `include!` macro has been modified to recursively expand macros to allow
usage of `concat!` as an argument, for example. The use case spelled out in RFC
403 was for `env!` to be used as well to include compile-time generated files.
The macro also received a bit of tweaking to allow it to expand to either an
expression or a series of items, depending on what context it's used in.

[rfc]: https://github.com/rust-lang/rfcs/pull/403
Local crate half of enum namespacing
Fix cross-crate enum namespacing
Switch is_public to a bitflags type for NsDefs

Preparation for importability tracking
Basic tests
Fix import restrictions

I am not happy with the way that we track importability for external
crates
Make variant flat reexports work
Rebase cleanup
DSTify BytesContainer
Remove unnecessary allocations
DSTify ToCStr
collections: Remove all collections traits

As part of the collections reform RFC, this commit removes all collections
traits in favor of inherent methods on collections themselves. All methods
should continue to be available on all collections.

This is a breaking change with all of the collections traits being removed and
no longer being in the prelude. In order to update old code you should move the
trait implementations to inherent implementations directly on the type itself.

Note that some traits had default methods which will also need to be implemented
to maintain backwards compatibility.

[breaking-change]
cc #18424
rollup merge of #18457 : japaric/tocstr
rollup merge of #18460 : gamazeps/issue18451
rollup merge of #18463 : japaric/bytes2
rollup merge of #18468 : jakub-/iter-repeat
rollup merge of #18470 : alexcrichton/dash-l