rustc: Remove f{32,64} % from the language

This commit removes the compiler support for floating point modulus operations,
as well as from the language. An implementation for this operator is now
required to be provided by libraries.

Floating point modulus is rarely used, doesn't exist in C, and is always lowered
to an fmod library call by LLVM, and LLVM is considering removing support
entirely.

Closes #12278
Remove redundant variable in LruCache::put
Eliminate unecessary extra sigil node from LruCache.

Instead of allocating both head and tail nodes for the ends of the node
list, a single node can be allocated and linked circularly instead,
making it act as both the head and the tail of the list at the same
time.
Use more precise span when reporting semicolon hint

When reporting "consider removing this semicolon" hint message, the
offending semicolon may come from macro call site instead of macro
itself. Using the more appropriate span makes the hint more helpful.

Closes #13428.
Fix a couple places in docs where try_send wasn't changed to send_opt
std: Fix compiling on FreeBSD

Ah, the wonders of not being gated on FreeBSD...
std: Fix demangling with middle special chars

Previously, symbols with rust escape sequences (denoted with dollar signs)
weren't demangled if the escape sequence showed up in the middle. This alters
the printing loop to look through the entire string for dollar characters.
Merge the Round trait into the Float trait

Move the rounding functions into the `std::num::Float` trait and then remove `std::num::Round`.

This continues the flattening of the numeric traits tracked in #10387. The aim is to make `std::num` very simple and tied to the built in types, leaving the definition of more complex numeric towers to third-party libraries.

[breaking-change]
Have floating point functions take their parameters by value.

Make all of the methods in `std::num::Float` take `self` and their other parameters by value.

Some of the `Float` methods took their parameters by value, and others took them by reference. This standardises them to one convention. The `Float` trait is intended for the built in IEEE 754 numbers only so we don't have to worry about the trait serving types of larger sizes.

[breaking-change]
Fix formatting in float implementations
Reorder Float methods in trait definition and make consistent in impls
doc: add webfonts and tweak the styles accordingly
auto merge of #13615 : alexcrichton/rust/improve-demangling, r=brson

Previously, symbols with rust escape sequences (denoted with dollar signs)
weren't demangled if the escape sequence showed up in the middle. This alters
the printing loop to look through the entire string for dollar characters.
Rewrite paragraph describing difference between try_send and send_opt
rustc: Ensure closures are "split-stack"

In upgrading LLVM, only rust functions had the "split-stack" attribute added.
This commit changes the addition of LLVM's "split-stack" attribute to *always*
occur and then we remove it sometimes if the "no_split_stack" rust attribute is
present.

Closes #13625
auto merge of #13628 : alexcrichton/rust/issue-13625, r=thestinger

In upgrading LLVM, only rust functions had the "split-stack" attribute added.
This commit changes the addition of LLVM's "split-stack" attribute to *always*
occur and then we remove it sometimes if the "no_split_stack" rust attribute is
present.

Closes #13625
green: Fix missing Send bounds on procedures

These were mistakenly not updated as part of the removal of the Send bound by
default on procedures.

cc #13629
mk: Pass exact compile to rustc on cross compiles

Instead of passing through CC which may have things like ccache and other
arguments (when using clang) this commit filters out the necessary arguments
from CC to pass the right linker to rustc.

Closes #13562
auto merge of #13610 : jsanders/rust/sender-try-send-docs, r=alexcrichton

I was getting a bit confused by these and (I think) managed to track it down to fallout from #13448 and #13465.
auto merge of #13613 : alexcrichton/rust/fix-freebsd-compile, r=brson

Ah, the wonders of not being gated on FreeBSD...