mk: Rename CTEST_BENCH to TEST_BENCH

The CTEST prefix is specifically related to the compiletest driver
mk: Add NO_BENCH variable for turning off the --bench flag
Remove ChanOneHack/PortOneHack extra allocation
Optimize try_recv to not require the two context switches when data is available.
Add some missing method wrappers to std::num
Improve std::num module description, and fix some formatting
std: Disallow bytes 0xC0, 0xC1 (192, 193) in utf-8

Bytes 0xC0, 0xC1 can only be used to start 2-byte codepoint encodings,
that are 'overlong encodings' of codepoints below 128.

The reference given in a comment -- https://tools.ietf.org/html/rfc3629
-- does in fact already exclude these bytes, so no additional comment
should be needed in the code.
std: Deny overlong encodings in UTF-8

An 'overlong encoding' is a codepoint encoded non-minimally using the
utf-8 format. Denying these enforce each codepoint to have only one
valid representation in utf-8.

An example is byte sequence 0xE0 0x80 0x80 which could be interpreted as
U+0, but it's an overlong encoding since the canonical form is just
0x00.

Another example is 0xE0 0x80 0xAF which was previously accepted and is
an overlong encoding of the solidus "/". Directory traversal characters
like / and . form the most compelling argument for why this commit is
security critical.

Factor out common UTF-8 decoding expressions as macros. This commit will
partly duplicate UTF-8 decoding, so it is now present in both
fn is_utf8() and .char_range_at(); the latter using an assumption of
a valid str.
std: Add from_bytes test for utf-8 using codepoints above 0xffff
Implement select() for new runtime pipes.
Add test cases for select
Add a better-for-testing optimistic_check() for pipes with cfg(test).
(cleanup) Fix unimplemented message for kill_all in newsched.
Unkillable is not unsafe. Close #7832.
UnsafeArc methods return unsafe pointers, so are not themselves unsafe.
std: Mark the static constants in str.rs as private

static variables are pub by default, which is not reflected in our code
(we need to use priv).
auto merge of #8133 : blake2-ppc/rust/overlong-utf8, r=cmr

Fix is_utf8 and UTF-8 char width functions to deny non-canonical 'overlong encodings' in UTF-8.

We address the function is_utf8 to make it more strict and correct, but no changes are made to the handling of invalid UTF-8.

Fixes issue #3787
FALSE is not 1u8 but 0u8, of cource.

Signed-off-by: OGINO Masanori <masanori.ogino@gmail.com>
auto merge of #8137 : omasanori/rust/ubool-false, r=bblum

Obvious mistake, but there is no failure because no code uses FALSE.
auto merge of #8115 : bjz/rust/num-traits, r=brson

Continues #4819