Fix single-line-style paragraph fills with code immediately before or after
rustdoc: Generate valid code for struct-variants

Closes #9587
rm only use of type_is_immediate outside of trans
Add new lint: non_uppercase_pattern_statics, for #7526.

This tries to warn about code like:
    ```rust
    match (0,0) {
        (0, aha) => { ... },
        ...
    }
    ```
where `aha` is actually a static constant, not a binding.
Throwing in another interesting test case: There is no need to warn
about constants that are (non-trivial) paths rather than just
identifiers, regardless of what case their characters are.
Fix typo in comment.
Expanded test to clarify that the constants *are* matching when they should.
rustpkg: Make test_rustpkg_test_output more permissive

test output may contain color codes, so check for several small strings
instead of one big one.
auto merge of #9640 : catamorphism/rust/rustpkg-test-fix, r=alexcrichton

r? @alexcrichton test output may contain color codes, so check for several small strings
instead of one big one.
Workaround conflict between all-uppercase static and NaN definition.
Revise error message to use phrase "all caps" instead of "uppercase".

This is to clarify that the lint is checking for THIS_THING and not This.
Add test for issue #9446.
Clarify format! implicit positional references

It was a little ambiguous before how explicitl positional parameters and
implicit positional parameters intermingled, and this clarifies how the two
intermingle. This also updates a little bit of documentation/code examples
elsewhere as well.
add -Z soft-float option

This change adds -Z soft-float option for generating
software floating point library calls.
It also implies using soft float ABI, that is the same as llc.

It is useful for targets that have no FPU.
rustdoc: Add the ability to input json

This modifies the command-line usage of rustdoc to intake its own JSON output as
well as a rust source file. This also alters the command line from
`rustdoc input file`  to `rustdoc file` with the input/output formats specified
as -r and -w, respectively.

When using a JSON input, no passes or plugins are re-run over the json, instead
the output is generated directly from the JSON that was provided. Passes and
plugins are still run on rust source input, however.
rustdoc: Update the man page

Closes #9622
rustdoc: Detect repeated keys and fix width

When a key is pressed and held, this now does the OS-style repeating after a bit
of a pause. Also fixes the width of search results to be correct (was changed
beforehand and didn't catch this).
rustdoc: Use a BufferedWriter when emitting source

This takes the rendering time of source files for libstd from 12.5s to 0.1s,
turns out write! calls the write function *a lot*
rustdoc: Stop ignoring dox on fields/variants

This is progress towards #9611
rustdoc: Don't ignore dox on impl blocks

Closes #9611