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...
doc: add webfonts and tweak the styles accordingly
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...
Eliminate the need for Options in LruEntry.

LruEntry nodes previously used Option to encapsulate the key and value
fields. This was used merely as a way avoid having values for the sigil
node. Apart from wasting a few bytes for the discriminant, this
cluttered the rest of the code, since these fields always contained
Some on regular nodes as a class invariant.

The Option wrapping was removed, and the values in the sigil field are
initialized using mem::init, so that they don't contain any real data.
Refactor ty_vec represent &[T] as &([T])

Refactores all uses of ty_vec and associated things to remove the vstore abstraction (still used for strings, for now). Pointers to vectors are stored as ty_rptr or ty_uniq wrapped around a ty_vec. There are no user-facing changes. Existing behaviour is preserved by special-casing many instances of pointers containing vectors. Hopefully with DST most of these hacks will go away. For now it is useful to leave them hanging around rather than abstracting them into a method or something.

Closes #13554.
serialize: Remove errant println!'s from decode
shootout-fannkuch-redux rewrite

Less bound checking and parallelisation.  Brute speed improvement
is about 15% faster.
Allow inheritance between structs.

No subtyping, no interaction with traits. Partially addresses #9912.
rustuv: Fix a tcp connect timeout bug on windows

When a uv_tcp_t is closed in libuv, it will still invoke the pending connect_cb,
and I thought that it would always call it with ECANCELED, but it turns out that
sometimes we'll get a different error code instead. Handle this case by checking
to see if the request's data is NULL and bail out if so (the timeout expired).