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
std: Fail more gracefully on thread spawn errors

On windows, correctly check for errors when spawning threads, and on both
windows and unix handle the error more gracefully rather than printing an opaque
assertion failure.

Closes #13589
Fix smallest-hello-world.rs interaction with `puts`

It now hands `puts` a zero-terminated string, like it expects.

Fix #13603.
Fix a couple places in docs where try_send wasn't changed to send_opt
vim: Add StrBuf as type to hilighting
std: Fix compiling on FreeBSD

Ah, the wonders of not being gated on FreeBSD...
Reduce HashMap allocations.
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.
auto merge of #13606 : alexcrichton/rust/better-thread-errors, r=brson

On windows, correctly check for errors when spawning threads, and on both
windows and unix handle the error more gracefully rather than printing an opaque
assertion failure.

Closes #13589
auto merge of #13608 : tbu-/rust/pr_smallesthello, r=alexcrichton

It now hands `puts` a zero-terminated string, like it expects.

Fix #13603.
std: Add an experimental connect_timeout function

This adds a `TcpStream::connect_timeout` function in order to assist opening
connections with a timeout (cc #13523). There isn't really much design space for
this specific operation (unlike timing out normal blocking reads/writes), so I
am fairly confident that this is the correct interface for this function.

The function is marked #[experimental] because it takes a u64 timeout argument,
and the u64 type is likely to change in the future.
auto merge of #13604 : alexcrichton/rust/connect-timeout, r=brson

This adds a `TcpStream::connect_timeout` function in order to assist opening
connections with a timeout (cc #13523). There isn't really much design space for
this specific operation (unlike timing out normal blocking reads/writes), so I
am fairly confident that this is the correct interface for this function.

The function is marked #[experimental] because it takes a u64 timeout argument,
and the u64 type is likely to change in the future.
auto merge of #13609 : richo/rust/str-type-vim, r=alexcrichton

It seems really weird to me when StrSlice and str highlight sanely, but StrBuf doesn't.

I think I added it to the right place.
auto merge of #13614 : cgaebel/rust/master, r=brson

We previously allocated 3x for every HashMap creation and resize. This patch reduces it to 1x.
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
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.