core: Add from_u32 to the Char trait

This is the only free function not part of the trait.
core: Mark Char trait experimental
char: Mark the MAX constant stable
unicode: Rename UnicodeChar::is_digit to is_numeric

'Numeric' is the proper name of the unicode character class,
and this frees up the word 'digit' for ascii use in libcore.

Since I'm going to rename `Char::is_digit_radix` to
`is_digit`, I am not leaving a deprecated method in place,
because that would just cause name clashes, as both
`Char` and `UnicodeChar` are in the prelude.

[breaking-change]
core: Rename Char::is_digit_radix to is_digit

This fits the naming of `to_digit` and `from_digit`. Leave
the old name deprecated.
core: Rename Char::len_utf8_bytes to Char::len_utf8

"bytes" is redundant.

Deprecate the old.
core: Add Char::len_utf16

Missing method to pair with len_utf8.
core: Add stability attributes to char::from_digit and from_u32

For now we are preferring free functions for primitive ctors,
so they are marked 'unstable' pending final decision. The
methods on `Char` are 'deprecated'.
core: Deprecated remaining free functions in `char`

Prefer the methods.
core: Mark remaining Char methods unstable

The `Char` trait itself may go away in favor of primitive inherent
methods. Still some questions about whether the preconditions are
following the final error handling conventions.
Fix various deprecation warnings from char changes
core: Convert Char methods to by-val self

Methods on primitmive Copy types generally should take `self`.

[breaking-change]
core: Convert Char::escape_default, escape_unicode to iterators

[breaking-change]
unicode: Convert UnicodeChar methods to by-value

Extension traits for primitive types should be by-value.

[breaking-change]
unicode: Add stability attributes to u_char

Free functions deprecated. UnicodeChar experimental pending
final decisions about prelude.
unicode: Rename is_XID_start to is_xid_start, is_XID_continue to is_xid_continue
unicode: Remove unused `non_snake_case` allows.
core: Update docs for escape_unicode, escape_default
core: Convert a 'failure' to 'panic' in docs
auto merge of #18603 : brson/rust/stdchar, r=aturon

* Deprecate the free functions in favor of methods, except the two ctors `from_u32` and `from_digit`, whose methods are deprecated.
* Mark the `Char` and `UnicodeChar` traits experimental until we decide for sure that we won't have some sort of inherent methods for primitives.
* The `UnicodeChar` methods related to numerics are now called e.g. `is_numeric` to match the 'numeric' unicode character class, and the `*_digit_radix` methods on `Char` now just called `*_digit`.
* `len_utf8_bytes` -> `len_utf8`
* Converted methods to take self by-value
* Converted `escape_default` and `escape_unicode` to iterators over chars.
* Renamed `is_XID_start`, `is_XID_continue` to `is_xid_start`, `is_xid_continue` to match conventions

This also converts `encode_utf8` and `encode_utf16` to return iterators. I suspect this is not the final form of these methods. Perf is worse (numbers in the commit). Many of the uses ended up being awkward, copying into a buffer then writing that buffer to a `Writer`. It might be more appropriate for these to return `Reader`s instead, but that type is defined in `std`.

Note: although I *did* add the `from_u32` ctor to the `Char` trait, I deprecated it again later, preferring the free ctors.

I've been sitting on this for a while.

cc @aturon