Allow manual implementations of built-in traits

[RFC #3]

cc #13231
Add more comprehensive unit tests for SIMD binops
BigUint always use u64 as the internal machine unsigned integer

This change allow a speedup of ~1.5 on shootout-pidigits on a i32
system.  `DoubleBigDigit` is used to abstract the internal
unsigned integer used in computation to simplity future
architecture specialization.

`BigDigit::from_uint` and `BigDigit::to_uint` become
`BigDigit::from_doublebigdigit` and `BigDigit::to_doublebigdigit`.

[breaking-change]
Allow built-in traits to be derived

[RFC #3]

cc #13231
Fix a/an typos
Add debug_assert and debug_assert_eq macros

I also switched some `assert!` calls over to `debug_assert!`.

Closes #12049.

RFC: 0015-assert
Remove useless assert! case
auto merge of #13886 : japaric/rust/fix-an-typos, r=alexcrichton

Found the first one in the rust reference docs. I was going to submit a PR with one fix, but figured I could look for more... This is the result.
auto merge of #13789 : sfackler/rust/debug-assert, r=pcwalton

I switched the `assert!` calls in `RefCell` over to `debug_assert!`.
There are probably other instances that should be converted as well, but
I couldn't think of any off the top of my head.

RFC: 0015-assert
Implement ToJson for Vec<T>

Now that ~[T] is obsolete, we need to allow to_json() to work for
vectors.
syntax: store char literals/tokens as `char`s rather than u32s.

Clearly storing them as `char` is semantically nicer, but this also
fixes a bug whereby `quote_expr!(cx, 'a')` wasn't working, because the
code created by quotation was not matching the actual AST definitions.
syntax: implement ToSource for more things in the quasiquoter.

The last few primitive types were missing.
regex_macros: simplify using AstBuilder & the improved quoting.

char literals now work in a quotation.

There were several instances of duplicated functionality in regex_macros
compared to AstBuilder so refactor those out.
auto merge of #13879 : huonw/rust/more-re, r=alexcrichton

Commits for details.

This shouldn't change the generated code at all (except for switching to `LitBinary` from an explicit ExprVec of individual ExprLit bytes for `prefix_bytes`).
rustdoc: escape shown input to prevent injection
Implement comparison operators for int and uint SIMD vectors
rustc: Use the "real" realpath function

The logic of the custom realpath function in metadata::loader was incorrect, but
the logic in util::fs was correct.

Closes #13890
Provide a note if method lookup fails and there are static definitions with the same name.
Add lint check for negating uint literals and variables.

See #11273 and #13318
rustc: Crawl static initializers for reachability

This ensures that private functions exported through static initializers will
actually end up being public in the object file (so other objects can continue
to reference the function).

Closes #13620