doc/guide-ffi: A few minor typo/language fixes

Signed-off-by: Anton Lofgren <alofgren@op5.com>
Add example for str replace() and MaybeOwned

  - for 3 implementations of into_maybe_owned()
  - is_slice()
  - is_owned()
Define a new setting g:rust_fold

g:rust_fold allows folding to be enabled. This lets the user turn on
folding without having to define autocommands.
Set softtabstop, textwidth, and optionally colorcolumn

Setting softtabstop makes <Del> delete 4 spaces as if it were a tab.

Setting textwidth allows comments to be wrapped automatically. It's set
at 80, which is the recommended line length for Rust programs. There are
suggestions that it should be 79, but our current style guide says 80 so
that's what we're matching.

A new setting g:rust_colorcolumn sets colorcolumn as well, to +1,101.
This indicates both the textwidth and the second stricter line length of
100 that our style guide lists.
Remove rust_colorcolumn, set textwidth to 99

The latest change to aturon/rust-guidelines states that lines must not
exceed 99 characters. This gets rid of the 80/100 split, so we don't
need to customize colorcolumn amymore.
Guide: match
Guide: looping
Guide: Standard input
rustc: Always mark #[crate_name] as used

It's just an annoying error if you use --crate-name on the command line and you
also have a #[crate_name] specified
rustc: Exclude #[repr(C)] from non camel case

C structs predominately do not use camel case identifiers, and we have a clear
indicator for what's a C struct now, so excuse all of them from this stylistic
lint.
Update doc URLs for version bump
Bump version to 0.12.0-pre
unicode: Remove crate_id attr
rustdoc: support tuple and struct patterns in function arguments
rustdoc: render 1-tuples as (T,) instead of (T)
mark std::hash experimental

The `hash` module was not included in an earlier pass that sets baseline
stability of modules within `std` to `experimental`.
Fix spans for attributes

They used to be one token too long, so you'd see things like
```
rust/rust/test.rs:1:1: 2:2 warning: unused attribute,
rust/rust/test.rs:1 #![foo]
rust/rust/test.rs:2 #![bar]
```
instead of
```
test.rs:1:1: 1:8 warning: unused attribute, #[warn(unused_attribute)] on
by default
test.rs:1 #![foo]
          ^~~~~~~
```
libc: Switch open to use a mode_t on unix

While I'm at it, export O_SYNC with the other flags that are exported.

Closes #15582
auto merge of #15610 : brson/rust/0.12.0, r=alexcrichton
auto merge of #15613 : cmr/rust/rustdoc-arg-patterns, r=alexcrichton