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
str: Inline `only_ascii` in string iterators.

Was killing performance of selector matching in Servo.
Fixed typo in tutorial

Replaced "len" by "length", to match the given code example.
auto merge of #13674 : pcwalton/rust/more-str-inlines, r=alexcrichton

Was killing performance of selector matching in Servo.

r? @alexcrichton (or anyone)
auto merge of #13683 : aochagavia/rust/pr, r=alexcrichton

Replaced "len" by "length", to match the given code example.
Add a span to ast::TyParam
Support unsized types with the `type` keyword
Check for unsized types in enums.

And allow the last field of a struct or variant to be unsized.
add support for quadruple precision floating point

This currently requires linking against a library like libquadmath (or
libgcc), because compiler-rt barely has any support for this and most
hardware does not yet have 128-bit precision floating point. For this
reason, it's currently hidden behind a feature gate.

When compiler-rt is updated to trunk, some tests can be added for
constant evaluation since there will be support for the comparison
operators.

Closes #13381
auto merge of #13415 : thestinger/rust/f128, r=alexcrichton

This currently requires linking against a library like libquadmath (or
libgcc), because compiler-rt barely has any support for this and most
hardware does not yet have 128-bit precision floating point. For this
reason, it's currently hidden behind a feature gate.

When compiler-rt is updated to trunk, some tests can be added for
constant evaluation since there will be support for the comparison
operators.

Closes #13381
Review changes
auto merge of #13398 : nick29581/rust/unsized-enum, r=nikomatsakis

Now with proper checking of enums and allows unsized fields as the last field in a struct or variant. This PR only checks passing of unsized types and distinguishing them from sized ones. To be safe we also need to control storage.

Closes issues #12969 and #13121, supersedes #13375 (all the discussion there is valid here too).
auto merge of #13597 : bjz/rust/float-api, r=brson

This pull request:

- Merges the `Round` trait into the `Float` trait, continuing issue #10387.
- Has floating point functions take their parameters by value.
- Cleans up the formatting and organisation in the definition and implementations of the `Float` trait.

More information on the breaking changes can be found in the commit messages.
Remove special rooting code from trans

[breaking-change]

cc #11586
rustc: remove usage of root_map from astencode
rustc: Remove root_map usage from _match
rustc: Remove root_map usage from lifetime