std: Improve docs for atomics. Fix two bugs

This adds lots of docs to the atomics module. Two of the examples
are using the future atomics API and are ignored temporarily.
I discovered a bug in the way AtomicBool's fetch_nand method is
implemented and fixed it by using the correct value for `true`.
I also fixed the implementation of AcqRel fences (it was only doing
a release barrier), and made a "relaxed" fence a failure.
test: Fix android tests

This compile-fail test didn't have a main function for architectures other than
x86
Make method Vec::remove() public
auto merge of #12994 : alexcrichton/rust/fix-android, r=huonw

This compile-fail test didn't have a main function for architectures other than
x86
rustc: disallow duplicate methods in trait impls

Closes #8153
remove duplicate methods in impls
rustc: test: don't silently ignore bad benches

This is adequate because when a function has a type that isn't caught here,
that is, it has a single argument, but it *isn't* `&mut BenchHarness`, it
errors later on with:

     error: mismatched types: expected `fn(&mut test::BenchHarness)` but found
     `fn(int)` (expected &-ptr but found int)

which I consider acceptable.

Closes #12997
rustc: buffer the output writer for -Z ast-json[-noexpand].

This takes the time for `rustc libstd/lib.rs -Z ast-json-noexpand >
file.json` from 9.0s to 3.5s (~0.5s spent parsing etc.) and `-Z
ast-json` from 11s to 5s (~1.5s spent parsing and expanding).
syntax: Don't parameterize the the pretty printer

The pretty printer constitues an enormous amount of code, there's no reason for
it to be generic. This just least to a huge amount of metadata which isn't
necessary. Instead, this change migrates the pretty printer to using a trait
object instead.

Closes #12985
`char`: s/character/Unicode scalar value/

Tweak the definition of `char` to use the appropriate Unicode terminology.
Move syntax-extension-hexfloat.rs

Move syntax-extension-hexfloat.rs to run-pass-fulldeps so it depends on libhexfloat being compiled before running.
Fix linkage1 test which fails due to --as-needed

It appears that the --as-needed flag to linkers will not pull in a dynamic library unless it satisfies a non weak undefined symbol. The linkage1 test was creating a dynamic library where it was only used for a weak-symbol as part of an executable, so the dynamic library was getting discarded.

This commit adds another symbol to the library which satisfies a strong undefined symbol, so the library is pulled in to resolve the weak reference.
rustc: remove linker_private/linker_private_weak

Remove the linker_private and linker_private_weak linkage attributes,
they have been superseded by private and private_weak and have been
removed in upstream LLVM in commit r203866.
rustc: remove obsolete linkage types

Remove obsolete linkage types from the llvm::Linkage enum.  The linkage
types are no-ops and weren't used inside rustc anyway.
libsyntax: librustdoc: ignore utf-8 BOM in .rs files
Closes #12974
closes #12967 fix [en|de]coding of HashMap<K,V> where K is a numeric type

serialize: ref #12697 minor adj. to last char check + prettyencode test
Add impl IntoStr for ::std::vec_ng::Vec<Ascii>
deny missing docs
Documentation and formatting changes for option.rs.
Relaxed the memory ordering on the implementation of UnsafeArc